2012-06-11 44 views
0

我試圖找到並替換一個字符串,當有人輸入它作爲一個搜索查詢,如果他們應該拼錯的代碼,例如Z0000ECEL被寫爲Z00ECEL它會取代它是Z00 + ECEL,這那麼它找到最接近的代碼這一點,仍然即使他們拼錯它找到它,我目前使用的:查找和替換使用正則表達式

 if (Regex.IsMatch(searchWords[0], "^[a-z]+z00+", RegexOptions.IgnoreCase)) 
     { 
      Regex.Replace(searchWords[0], "[0]+", "*0", RegexOptions.IgnoreCase); 
     } 

我不希望把一個通配符字符串的開始,因爲這將帶回到很多結果。

+0

該模式應該是_^z00 + [a-z] + _? –

+0

不,因爲起始字母因產品而異,所以我只是在你的樣品中使用^ [az] + –

+0

有Z000ECEL,所以最初_Z000_,然後其他字母 –

回答

1

這是做你想要什麼?

Regex.Replace(searchWords[0], "0{3,}", "00*"); 

這將替換爲3首或更多個零「00 *」

您也可以與您的第一次檢查

Regex.Replace(searchWords[0], "(?<=^[a-z]+z)0{3,}", "00*", RegexOptions.IgnoreCase); 

這涉及向後斷言結合這一點,所以0{3,}會只有在以前有^[a-z]+z才能被替換。

+0

這真是太好了,謝謝(事實證明我是在錯誤的地方做這件事會變得複雜得多) –

0

也許你正在尋找:

str = Regex.Replace(str, "(?i)(^[a-z]+0)0+", "$1+"); 
相關問題