2012-05-01 23 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