2016-09-14 54 views
-2

如果字符是單獨的,我該如何替換前面下劃線的任何字母字符(有或沒有重音)?請用JS代碼替換希望的結果。如何替換之前下劃線的任何字母字符(帶或不帶重音符號)?

var str = "c_est son avis "; 
//Desired result: 
str = "c'est son avis "; 

var str = "cc_est son avis "; 
//Desired result: 
str = "cc_est son avis "; 

var str = "Je pense que c_est son avis "; 
//Desired result: 
str = "Je pense que c'est son avis "; 

var str = "Je pense que cc_est son avis "; 
//Desired result: 
str = "Je pense que cc_est son avis "; 

感謝,

+0

試試regex101.com,它們會生成一個簡單的替換代碼。試試這個正則表達式https://regex101.com/r/rH6bZ3/1 –

+0

聽起來像你需要一個字邊界,一個匹配字符類和'_'的字母。在字母花樣周圍設置一個捕捉組,並用對組+撇號的反向引用替換。 –

+0

@ImmortalDude謝謝你的正則表達式樣本,但「cc_est兒子艾維斯」改變爲壞結果「cc'est son avis」。 –

回答

0

可能最好使用正則表達式(我吸那個) 做起來會像的哈克JS的方式。

var x = str.split('_'); 

for (var i=0 ; i<x.length ; i++){ 
    if (x[i].length == 1){ 
    x[i] = x[i]+"'"; 
    } else if (i < x.length-1){ 
    console.log(i); 

    x[i] = x[i] + "_" 
    } 

} 

var y = x.toString() 

ÿ將格式化的結果

CNC中固定的bug作爲評價突出顯示。

+0

感謝它的工作原理,只是想在數組轉換var y = x.toString()後用「」替換「,」。 –

0

你試過任何代碼嗎?

您可以使用INDEXOF得到的焦位置_和空間

var n = str.indexOf("_"); 
var x = str.indexOf(" "); 
1

一個簡單的使用正則表達式表達的替代將是這樣: str.replace(/(\b\w)\_/g,"$1'")

它在beggining的匹配單詞\b)如果存在一個字母\w)和下劃線\_),然後用替代捕獲組1(\b\w)$1替換字符串)和撇號。

您需要捕獲組,以保持匹配模式的一部分(假設c_est應儘可能c'est,你需要不斷c,否則就會與正則表達式的其餘部分更改)。

適用於上述所有情況。

相關問題