2

PHP の ucwords() に相当するものを Flex で実行しようとしています。文字列全体を各単語の最初の文字だけを大文字にしたくありません。誰も方法を知っていますか?

ありがとう!

4

5 に答える 5

11

試す

str.replace(/\b./g,function(m){return String(m).toUpperCase()});

説明:

正規表現 /\b./g は、任意の文字が続く単語境界に一致します。すべての一致は、replace メソッドの 2 番目のパラメーターで定義された無名関数に渡されます。この関数は、一致を大文字で返します。

于 2009-05-13T21:11:49.057 に答える
10

これはラファエルの答えと同じですが、警告はありません:)

str.replace(/\b./g,function(...m):String{return m[0].toUpperCase()});
于 2010-01-07T22:05:19.680 に答える
1

ポルトガル語の特殊文字に問題があったため、次の RegExp に変更しました。

str.replace(/(^|\s|\t)+\S/g, function(...m):String{return m[0].toUpperCase()});
于 2011-09-05T14:57:30.427 に答える
1

受け入れられた答えは、最初から文字列がすべて小文字であることを前提としています。すべて大文字またはランダムに大文字と小文字が混在する文字列で開始すると、これは機能しません。

最初からソース文字列をすべて小文字にする必要のない簡単な変更を次に示します。

str.toLowerCase().replace(/\b./g,function(...m):String{return m[0].toUpperCase()});
于 2011-05-25T13:14:27.787 に答える
0

いくつかのエラーと警告を回避するために、次の変更を加えました。

str.replace(/\b./g,function(m:String):String{return m.toUpperCase()});

しかし、1 つしか期待されていないのに 3 つのパラメーターがあると言って、奇妙なクラッシュが発生しました。

正規表現を修正しようとしましたが、私の正規表現はうまくいきません。だから私はパントした。これは機能します (少なくとも、文字列の最初の単語に対して)。複数の単語の場合は、分割を使用する必要があります。

str = str.substr(0,1).toUpperCase() + str.substr(1,str.length);

于 2009-05-19T16:01:30.360 に答える