1. ホーム
  2. ジャバスクリプト

[解決済み】文字列内の単語を大文字にする【重複あり

2022-04-10 02:12:15

質問

文字列中の単語を大文字にする場合、どのような方法が良いでしょうか?

どのように解決するのですか?

文字列内の単語を大文字にするための最短の実装は、ES6のarrow関数を使った次のようなものです。

'your string'.replace(/\b\w/g, l => l.toUpperCase())
// => 'Your String'

ES5互換の実装です。

'your string'.replace(/\b\w/g, function(l){ return l.toUpperCase() })
// => 'Your String'

この正規表現は基本的に、与えられた文字列の中の各単語の最初の文字にマッチし、その文字だけを大文字に変換します。

  • \b は、単語の境界(単語の先頭または末尾)にマッチします。
  • \w は、次のメタ文字 [a-zA-Z0-9] にマッチします。

非ASCII文字については、代わりにこちらのソリューションを参照してください。

'ÿöur striñg'.replace(/(^|\s)\S/g, l => l.toUpperCase())

この正規表現は、与えられた文字列の最初の文字と、その前にある空白以外のすべての文字にマッチし、その文字だけを大文字に変換します。

  • \s は空白文字にマッチします。
  • \S は空白以外の文字にマッチします。
  • (x|y) 指定された選択肢のいずれかにマッチします。

ここでは、次のように捕捉しないグループを使用することもできました。 /(?:^|\s)\S/g ただし g のフラグを正規表現に組み込んでも、サブグループは捕捉されないように設計されています。

乾杯