2011-01-27 33 views
6

1つの文字列に小文字と大文字の間にスペースを追加したいとします。例:JavaScript内の文字列内の小文字と大文字の間のスペース

FruityLoops 
FirstRepeat 

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

+3

は、有権者を@close:これはXSLTの質問の重複はどのように正確です! –

答えて

18
var str = "FruityLoops"; 

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

例:そのような単純なhttp://jsfiddle.net/3LYA8/

+0

+1。簡潔で正しい。 –

+0

@Matt:決定できませんか? ; o) – user113716

+0

これはトリックに感謝パトリックです! – Frank

3

何か:

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

は多分十分であり、あなたは手動で検索してそれを行うことができますが、それはかもしれ

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" 
    

    Live example

    より効率的に触発されたバージョン(しかし異なる)patrick's answer

    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" 
    

    Live example

  • +1

    +1はFruityJuicyLoopsのような言葉でも動作します – Aly

    +0

    私は隣接する大文字を扱うことができる解決策だけが見つかりました! +1、お元気です。 – Aaron

    +0

    /([a-z])?([A-Z])/ g、 "$ 1 $ 2"とはどういう意味ですか?大文字小文字の後ろに大文字の小文字を探します。小さいものはオプションです。最初のグループ(小文字)と第2グループ(首都)の間にスペースを入れますか? – stack1

    0

    正規表現のオプションは最高に見えます。しかし、正規表現の権利を取得することは難しいようです。

    別の質問をしようとするいくつかのより複雑なオプションとここにあります:

    Regular expression, split string by capital letter but ignore TLA

    +1

    リンク先のスレッドのほとんどはC#固有のもので、JavaScriptでは動作しません。 –