2017-06-09 5 views
1
var str='The_Andy_Griffith_Show'; // string to perform replace on 
var regExp1=/\s|[A-Z]/g; 
var regExp2=/[^A-Z]/g;   // regular expression 
var str2 =str.replace(regExp2,regExp1); 
// expected output: The_ Andy_ Griffith_ Show 

文字列のすべての最初の大文字をスペースとその同じ文字に置き換え、それが可能でない場合は回避策がありますか?あなたが任意のキャピタル・文字の前にスペースを追加したい場合は私はregExpを別のregExpに置き換えることができますか?

+0

期待される出力でた ''前にスペースはありますか? –

+0

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/replace ** no **。あなたは文字列か関数を使うことができます - RegExpはオブジェクトです – eithed

答えて

1

、それはここで

var str='The_Andy_Griffith_Show'; 
 
str = str.replace(/[A-Z]/g, ' $&') 
 
console.log(str); // => " The_ Andy_ Griffith_ Show"

/[A-Z]/g試合すべてASCII大文字と$&を使用するのに十分であることに後方参照でありますマッチ値全体

あなただけの単語の最初の大文字の前にスペースを追加したい場合は、交換用のパターンでthier値にキャプチャグループと後方参照を使用する必要があります。

var str='The_Andy_Griffith_Show'; // string to perform replace on 
 
str = str.replace(/(^|[^A-Z])([A-Z])/g, '$1 $2') 
 
console.log(str); // => " The_ Andy_ Griffith_ Show"

文字列startの大文字の前にスペースを追加したくない場合は(/([^A-Z])([A-Z])/gを使用)、^|を削除します。

+1

それは良いものでした(y) – jafarbtech

0

大文字のすべての出現にスペースを追加するには:あなたは何のちょうどregular expression/(?!^)[A-Z]/gを使用し、最初の文字の発生にスペースを追加したいない場合ということ

var str = 'The_Andy_Griffith_Show', 
 
    str2 = str.replace(/[A-Z]/g, letter => ` ${letter}`); 
 
    
 
console.log(str2);

注意してください。

0

他の回答にジャスト代わります。
はあなただけ大文字が続いている非大文字のと一致する可能性がつながると予想し、試合$&スペースでそれらを交換することを取得します。例えば

var str='The_Andy_Griffith_Show'; 
 
str = str.replace(/[^A-Z](?=[A-Z])/g, '$& ') 
 
console.log(str);

それとも単に大文字に続いて、これらの大文字のと一致します。

var str='The_Andy_Griffith_Show'; 
 
str = str.replace(/[_](?=[A-Z])/g, '$& ') 
 
console.log(str);

関連する問題