2012-05-01 57 views
0

我在C#和正則表達式小的遭遇,但我需要嘗試這個這個邏輯:如何使用正則表達式替換C#中的一部分字符串?

string replacedText = Regex.Replace(
    "ssdf bonnets sdf sdf sdf ", 
    @"(?i)^(.+)?(bonnet)(s?)(.+)?$", 
    "$1hood$3$4" 
); 

上面的代碼是一個答案計算器質疑:

更換字符串的一部分,同時保持休息完好? 而不是檢測單詞(閥蓋)我想替換多個值,例如,如果它發現「f」或「b」或「s」它將被替換爲「a」?

例如,如果輸入「ahfbsdrts STB」 輸出無線本地環路是「ahaaadrta ATA」

+2

請張貼所需的輸入/輸出的一些例子。從你的問題中很難判斷你想要做什麼 – musefan

+0

如果有幫助,我添加了一個例子。 – Iman25

回答

0

我張貼短碼的另一種選擇。

請參閱http://forums.asp.net/t/1185961.aspx/1

喜歡的東西string temp = Regex.Replace(input, @"[fbs]", "a");

+0

這工作得很好謝謝,但它仍然不能用阿拉伯字母我試圖找出它 – Iman25

+0

它不與控制檯一起工作,但它與文本框工作正常 – Iman25

0

爲什麼不直接使用多個與string.replace電話?

+0

,因爲不只是那些字母我需要替換上述實際上只是一個例子,所以我可以將解決方案應用於我的問題,即用「?」替換「Á」,「Ã」,「ؤ」等阿拉伯字母。等所有阿拉伯文字直到所有阿拉伯文字轉換成英文對方字母 – Iman25

+1

@ Iman25如果您僅替換*每個*單個字符*(即使多次)出現,那麼您的最佳方法就是應該使用一個簡單的字符串。替換(多次,如有必要)代替正則表達式解析。 –

+0

但我需要在某些情況下放置一些條件,例如,如果在單詞的引誘下「ا」。 – Iman25

0

試試這個:

using System; 
using System.Text.RegularExpressions; 

public class Example 
{ 
public static void Main() 
{ 
    string input = "ssdf bonnets sdf sdf sdf "; 
    string pattern_1 = "f"; 
    string replacement = "a"; 
    Regex rgx_1 = new Regex(pattern_1); 
    string result = rgx_1.Replace(input, replacement); 
    string pattern_2 = "b"; 
    Regex rgx_2 = new Regex(pattern_2); 
    result = rgx_2.Replace(result, replacement); 
    string pattern_3 = "s"; 
    Regex rgx_3 = new Regex(pattern_3); 
    result = rgx_3.Replace(result, replacement); 
    Console.WriteLine("Original String: {0}", input); 
    Console.WriteLine("Replacement String: {0}", result);        
} 
} 
+0

謝謝,但這將是這麼長的代碼 – Iman25