6

1 つの文字列の小文字と大文字の間にスペースを追加したい。例えば:

FruityLoops
FirstRepeat

ここで、小文字と大文字の間にスペースを追加したいと思います。JavaScript でどのように開始すればよいかわかりません。substr または検索で何か?誰かが私を助けることができますか?

4

4 に答える 4

21
var str = "FruityLoops";

str = str.replace(/([a-z])([A-Z])/g, '$1 $2');

例: http://jsfiddle.net/3LYA8/

于 2011-01-27T17:43:15.910 に答える
3

そのような単純なもの:

"LoL".replace(/([a-z])([A-Z])/g, "$1 $2")

多分十分です;)

于 2011-01-27T17:43:59.637 に答える
2

手動検索でそれを行うことができますが、正規表現を使用すると簡単になる場合があります。仮定:

  • あなたはそれが大文字で始まることを知っています
  • その首都の前にスペースは必要ありません
  • 後続のすべての大文字の前にスペースが必要です

それで:

function spacey(str) {  
    return str.substring(0, 1) +
           str.substring(1).replace(/[A-Z]/g, function(ch) {
        return " " + ch;
    });
}

alert(spacey("FruitLoops")); // "Fruit Loops"

実際の例

パトリックの答えに触発された(しかし異なる)より効率的なバージョン:

function spacey(str) {  
    return str.substring(0, 1) +
           str.substring(1).replace(/([a-z])?([A-Z])/g, "$1 $2");
}

alert(spacey("FruityLoops"));  // "Fruity Loops"
alert(spacey("FruityXLoops")); // "Fruity X Loops"

実際の例

于 2011-01-27T17:44:06.797 に答える
0

regexp オプションが最適です。ただし、正規表現を正しく取得するのは難しいようです。

ここには、いくつかのより複雑なオプションを試す別の質問があります。

正規表現、大文字で文字列を分割しますが、TLA は無視します

于 2011-01-27T18:08:48.500 に答える