No.1
- 回答日時:
私は、現在契約切れのフリーター(ほぼ無職)です。
30代の男性です。
『Perl』のプログラムについては何も知りませんが・・・。
行の先頭の文字を入力する時だけ、『Shift』キーを押しながら入力する・・・という方法ではダメでしょうか?
違っていたらゴメンナサイ。
No.2
- 回答日時:
処理を順番に考えて行きます。
1.データを変数に入れる
2.データを単位で区切り、配列に格納(行頭なら改行コード、文節ならピリオド等々)
3.配列文処理を繰り返す
3-1.英文字1文字目をucで大文字変換
こんな感じでしょうか
No.3
- 回答日時:
こんにちは。
全て小文字で入力された複数の英文というのは、
一つの変数に複数の英文があるのか、ファイル1行毎に英文ができてるのか。
また一文と見るのはピリオドまでが一つの英文とするのか等。
その辺を明示すれば、良い回答が付くかもしれません。
ucfirstという関数を使えば先頭文字は大文字になります。
(どこが先頭かは判別できません。あくまで文字列の先頭が大文字になります)
例:
$test = "nice to meet you";
print $test;
print "<br>";
print ucfirst ( $test );
== 結果
nice to meet you
Nice to meet you
質問のしかたが悪いのに、良いご回答をいただけたことに感謝します。
ucfirstでWEB検索したところ出てきました。ちゃんと関数が用意されているんですね。
uc関数についても載っていたのでさらに勉強になりました。
ありがとうございました。
No.4
- 回答日時:
行頭の文字だけを大文字にしたいのであれば、
# $lineは英文が1行分入っている
$line =~ s/^(.)/uc($1)/e;
先頭の一文字を大文字にする置換演算です。
この回答への補足
ご回答ありがとうございます。
どうやら質問のしかたが悪かったようです。
教えていただいた方法で変換できることは確認できました。
実際にやりたかったことは次のようなことです。
例えば、英文の中にmonday、tuesdayなどが入っているとします。
これらを一括でmonday→Monday、tuesday→Tuesdayにしたかったんです。
monday、tuesdayは英文の中にランダムに入っていますので、
○○dayがあったら先頭を大文字にしたいです。
このさいtodayも大文字にしてしまった良いです。
(あとで同様の操作でTodayはtodayに戻せるはずなので。)
よろしくお願いします。
No.5
- 回答日時:
ちょっと複雑ですが、
$line =~ s/\b(\w*day)\b/ucfirst($1)/eg;
\bは単語の区切り(スペースや改行、タブ、ピリオド、コンマなど)、\wは英文字をあらわします。
単語と単語の区切りに囲まれ、"day"で終わる英単語の頭を大文字に変えます。
todayやyesterdayは個別に戻してやってください(^^;
この回答への補足
早いご回答ありがとうございます。
試しにサンプルを作ってみたところ、次のような結果になりました。
----------------------------------------------------------------
#!/usr/bin/perl
$_ = "today is friday. tomorrow is saturday. the day next tomorrow is sunday.";
$_ =~ s/\b(\w*day)\b/ucfirst($1)/eg;
print $_ . "\n";
----------------------------------------------------------------
<<結果>>
Today is Friday. tomorrow is Saturday. the Day next tomorrow is Sunday.
やはりちょっと発展させて、sunday, monday, tuesday, … ,saturdayだけ、
変換するようにしようと思って、
$_ =~ s/([smtwf].*day)/ucfirst($1)/eg;
としてみたところ、行頭のtodayしか変換されませんでした。
(これだと、うまくいってもtodayが変換されてしまいますが…)
Today is friday. tomorrow is saturday. the day next tomorrow is sunday.
しかたないので、
$_ =~ s/((sunday|monday|tuesday|thursday|friday|saturday|^today))/ucfirst($1)/eg;
としてみたところ、うまく行きました。
<<結果>>
Today is Friday. tomorrow is Saturday. the day next tomorrow is Sunday.
でもこれだとちょっと見栄えが悪いので、もう少し何とかしたいです。
dayが共通なのでdayをまとめて、先頭にいろいろ入れられるようにして、
そこを変えるだけでいろんなパターンが変換できるようにしたいです。
度々申し訳ありませんが、これだけ最後に教えていただけませんか?
No.6ベストアンサー
- 回答日時:
補足中の、
$_ =~ s/([smtwf].*day)/ucfirst($1)/eg;
ですが、'.'は改行以外のすべての文字とマッチしてしまうので、英数文字をあらわす'\w'で置き換え、
$_ =~ s/([smtwf]\w*day)/ucfirst($1)/eg;
とするのが正しいです。
(でもこれだとdayも引っかかるので、[smtwf]\w+day がいいでしょうね)
共通項であるdayをまとめるのなら、
$_ =~ s/\b((sun|mon|tues|wednes|thurs|fri|satur)day)\b/ucfirst($1)/eg;
という書き方でどうでしょうか。(\bは入れておいたほうがいいと思います)
また、置換項目を変数で管理したかったら、
@week = ('sun','mon','tues','wednes','thurs','fri','satur');
$line = "today is friday. tomorrow is saturday. the day next tomorrow is sunday.";
foreach $_(@week){
$line =~ s/\b(($_)day)\b/ucfirst($1)/eg;
}
とか。見栄えはよくなります。
(ここまでやるとdayをまとめるとかは考えなくてもいいですね)
ご回答ありがとうございます。
配列変数で管理するとスッキリしますね。
曜日だけでなく、いろいろなところで応用が効きそうです。
いろいろ勉強になってよかったです。
将来的にはプログラマーになりたいと思っていますので、
また質問するときはよろしくお願いします。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
カンマ区切りの数字をCSVフ...
-
Excelについて質問です。 セル...
-
C#で、テキストボックスの入力...
-
カンマ区切り
-
エクセルの区切り位置の設定方法
-
データグリッド内の数値をカン...
-
マクロを使ってフォルダー内に...
-
WORDで改ページすると時々グレ...
-
EXCELからCSVにすると余計なカ...
-
Excel VBA: Inputステートメ...
-
「カンマ」と「コンマ」は同じ...
-
C#でcsvファイルの列を入れ替え...
-
なぜ「◯◯年代に」という時は th...
-
メモ帳からエクセルにセル区切...
-
CSVの定義
-
エクセル:桁区切り「カンマ」...
-
パス区切りの文字について
-
[VBA][Excel]クリップボードか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
マクロを使ってフォルダー内に...
-
カンマ区切りの数字をCSVフ...
-
CSVの定義
-
WORDで改ページすると時々グレ...
-
データにカンマが入ったCSVデー...
-
何故、日本は未だに数字を3桁...
-
[VBA][Excel]クリップボードか...
-
VBAでtxtファイルを読み込む際...
-
VB2005のTextBoxでカン...
-
JPY ¥1,500.00は日本円でお幾ら?
-
C#で、テキストボックスの入力...
-
ひとつの命令を複数行に記述
-
PHP カンマをエスケープしたい...
-
メモ帳からエクセルにセル区切...
-
カンマ区切り
-
パス区切りの文字について
-
エクセル セルの書式設定 ユ...
おすすめ情報