2010-05-04 68 views
4

我正在使用regex.Replace()來替換整個字符串。所以我給了像Regex.Replace(str,@ stringToReplace,「**」); stringToReplace = @「session」+「\ b」;Regex.Replace()替換整個事件

如果我給它喜歡它沒有取代..但如果我給像Regex.Replace(str,@「session \ b」,「**」);那麼它的工作..如何避免這個問題..我想通過將動態地進行設定值..

感謝 尼米

+0

請用標記語言編程。 – doublep 2010-05-04 10:55:20

回答

4

嘗試

stringToReplace = @"session" + @"\b"; 
+0

+1最快。 – 2010-05-04 10:52:40

+0

它的工作。 Great .. Thanku so much .. – Nimmi 2010-05-04 10:56:58

+1

@Nimmi:你應該(如果可能的話)選擇最有用/正確的答案,並選中它旁邊的複選標記以將其標記爲「已接受」。也贊成好的答案(我剛剛提出了你的問題,現在你有足夠的聲譽來這樣做)。 – 2010-05-04 12:52:16

0

@ 「會話」 +「\ b 「 和 @」session \ b「

不是相同的字符串。 在第一種情況下,「\ b」不會將斜線視爲斜線,而是視爲轉義參數。在第二種情況下,你這樣做。

所以@ 「會話」 + @ 「\ B」 應帶來同樣的結果

4

@這裏指的是verbatim string literal

當您在不使用@的情況下寫入「\ b」時,它表示退格字符,即ASCII碼爲8的字符。您希望字符串由反斜槓後跟b組成,這意味着當處於常規表達。

爲了得到這個,你需要將反斜線轉義爲文字反斜槓:"\\b"或者將第二個字符串也寫成逐字串字符串:@"\b"。還要注意的是@"session"(沒有\b)中的@實際上並沒有效果,儘管將它留在那裏並沒有什麼壞處。

stringToReplace = "session" + @"\b"; 
+0

+1爲最完整的解釋。 :) – 2010-05-04 11:46:11