2013-03-05 57 views
2

我沒有在正則表達式中找到正如我應該的那樣,所以這可能看起來像一個愚蠢的問題。使用正則表達式替換而不是字符串替換

我正在將string分成string[].Split(' ')
目的是檢查單詞或替換任何單詞。

我現在遇到的問題是,這個詞是內容替換,它必須是一個精確匹配,但我分裂的方式,有可能是一個([與分詞。

到目前爲止,爲了解決這個問題,我使用的是這樣的:
formattedText.Replace(">", "> ").Replace("<", " <").Split(' ')

這個工作現在正常,但我想要包含更多的特殊字符,如[;\\/:*?\"<>|&']

有沒有比我更換方法更快的方法,比如Regex?我有一種感覺,我的路線遠不是最好的答案。

編輯
This is an (example) string
將被替換爲
This is an (example) string

+0

我不認爲我理解這個問題。你需要將這些特殊字符替換爲什麼?如果你顯示一個示例字符串,這將有所幫助。 – 2013-03-05 09:30:10

+0

如果你想提取字符串中的所有單詞,我想這應該是你的問題的答案:http://stackoverflow.com/q/2159026/1236044 – jbl 2013-03-05 09:59:18

+0

@ Chirag64對不起 - 更新它。 – TheGeekZn 2013-03-05 09:59:41

回答

0

我的東西,這是正確的事情,你想

如果你想這些

- >; \ /:*?」 < > | &「符號來代替

string input = "(exam;\\/:*?\"<>|&'ple)"; 
     Regex reg = new Regex("[;\\/:*?\"<>|&']"); 
     string result = reg.Replace(input, delegate(Match m) 
     { 
      return " " + m.Value + " "; 
     }); 

,如果你想如果你想更換整個單詞替換除外-ZA-Z0-9_

string input = "(example)"; 
     Regex reg = new Regex(@"\W"); 
     string result = reg.Replace(input, delegate(Match m) 
     { 
      return " " + m.Value + " "; 
     }); 
3

所有的字符,你可以做到這一點與正則表達式是這樣的。

string text = "This is an example (example) noexample"; 
string newText = Regex.Replace(text, @"\bexample\b", "!foo!"); 

newText將包含"This an !foo! (!foo!) noexample"

這裏的關鍵是,\b這個詞休息元字符。所以它會匹配一行的開頭或結尾,以及單詞字符(\ w)和非單詞字符(\ W)之間的轉換。它與使用\ w或\ W的最大區別在於它們不會在行的開始或結尾處匹配。