31

文字列の各単語の最初の文字を大文字にする最も簡単な方法は何ですか?

4

10 に答える 10

52

@brian がコメントで言及しているように、@piCookie によって現在受け入れられている回答は間違っています!

$_="what's the wrong answer?";
s/\b(\w)/\U$1/g
print; 

これにより、「What'S The Wrong Answer?」が出力されます。大文字の S が間違っていることに注意してください

FAQにあるように、おそらく使用したほうがよいでしょう

s/([\w']+)/\u\L$1/g

または Text::Autoformat

于 2008-10-02T18:27:06.587 に答える
18

よくある質問を参照してください。

ucfirst()文字列を分割して後で結合することなく、文字列内の各単語の最初の文字を大文字にするというOPの質問を満たすとは思いません。

于 2008-09-16T21:19:29.383 に答える
13

ucfirst関数を見てください。

$line = join " ", map {ucfirst} split " ", $line;
于 2008-09-16T21:17:52.710 に答える
11
$capitalized = join '', map { ucfirst lc $_ } split /(\s+)/, $line;

空白をキャプチャすることにより、リストに挿入され、元の間隔を再構築するために使用されます。「ucfirst lc」は「teXT」を「Text」に大文字にします。

于 2008-10-08T10:49:54.630 に答える
6
$string =~ s/(\w+)/\u$1/g;

うまくいくはずです

于 2008-09-16T22:14:12.123 に答える
2

これは、各行の最初の単語だけを大文字にします:

perl -ne "print (ucfirst($1)$2)  if s/^(\w)(.*)/\1\2/" file
于 2012-02-29T23:37:09.303 に答える
1

すべて大文字の単語があり、代わりに大文字のみを使用したい場合、FAQ ソリューションは機能しないことに注意してください。より複雑な正規表現を作成するか、FAQ ソリューションを適用する前に文字列に対して lc を実行することができます。

于 2008-09-16T22:56:39.137 に答える
1

Perl で書かれた非常にクールなコードである' Title Case 'を使用できます。

于 2010-02-25T14:29:00.213 に答える
-1

マップのucfirst関数は確かにこれを行いますが、非常に初歩的な方法でのみです。もう少し洗練されたものが必要な場合は、John Gruber の TitleCase script をご覧ください

于 2008-09-17T02:41:36.443 に答える