2017-06-09 59 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

如果你想之前任何 captial字母加一個空格,它是足夠使用

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"

刪除^|如果您不想在字符串開頭的大寫字母前添加空格(即使用/([^A-Z])([A-Z])/g)。

+1

這是一個很好的(y) – jafarbtech

0

要添加空間大寫字母所有出現:

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

請注意,如果你想沒有添加空間的第一個字母出現時,只需使用regular expression/(?!^)[A-Z]/g

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);