2015-05-16 90 views
2

我想用「你的妹妹」代替「你」。然而,像「youtube」這樣的詞必須保持不變。所以我決定使用在JavaScript中,有沒有一種方法來區分其他字符的字母?

replace(/ you /, " your sister "); 

但是現在字符串「我愛你!」保持不變,以及任何字符串,其中沒有後跟字符串的空格。我想知道「你」這個詞後面的字是否是一個字母。如果是,請保持不變,如果不是,請將其更改爲「您的妹妹」。

+0

str.replace(「you」,「your sister」); –

+0

@torazaburo他們可能也在尋找一個有用的鏈接或完整的答案如何使用它,因爲'\ b'只能用於真正的正則表達式調用=) –

回答

6

什麼是「字母」?這不像聽起來那麼愚蠢:作爲一個例子,許多語言都把7當成一個數字,但是有一些拼寫字母實際上是一個字母。因此,在這種情況下,您需要描述您的意思,以便可以根據您的要求定製答案(您在這方面做得很好,但標題仍然具有啓發性)。

要回答的實際問題,你可以做一個全局正則表達式替換,如:

var replaced = input.replace(/\byou\b/g, 'your sister'); 

利用這一點,字符串「你」將被「你的妹妹」所取代,但只有當它的包圍通過「詞邊界」(空格,句子的開始/結束,符號等)。

我們還需要使用/.../g修飾符(用於'全局匹配'),以便替換作用於「您」的所有實例,而不僅僅是第一個。

4

你需要單詞邊界字符\b

s.replace(/\byou\b/g, 'your sister') 
+1

雖然可能帶有'g'修飾符 –

+0

是的,可能:) –

2

您正在尋找\b(字邊界):

slice(/\byou\b/, "your sister") 

但什麼是slice?我假定你的意思是這樣

string.replace(/\byou\b/, "your sister") 
2

\b單詞邊界匹配 - 單詞字符之間(實際上是字母加下劃線)和非單詞字符。

因此/\byou\b/會匹配「你」,當不是另一個詞的一部分。


這是「歷史原因」:它使人們容易平時一套用C允許像編程語言識別的字符相匹配。

相關問題