2012-11-15 193 views
1

如果?后跟数字,我想用文本Rs替换问号字符?C#正则表达式替换问号

这是我试过的。但不工作。

string str = "DFg sdfsdaf ?145 dfgsdf ?fg"; 
str = str.Replace(@"\\?", "Rs"); 
Console.WriteLine(str); 

所需的输出:

DFg sdfsdaf Rs145 dfgsdf ?fg 

请帮助。

+0

不工作..... –

+0

为什么你需要正则表达式? – Default

+1

你应该使用[Regex.Replace](http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.replace.aspx),而不是[string.Replace](http:// msdn.microsoft.com/en-us/library/system.string.replace.aspx) – Default

回答

3

尝试这样太:

System.Text.RegularExpressions.Regex.Replace(str,@"\?(?=\d+)","Rs"); 

我会建议this读。上述模式查找?并检查它是否跟着digit一次或多次,然后用Rs替换?

+0

完美.....非常感谢..先生.. –

+0

很高兴看到它有帮助! – NeverHopeless

1

试试这个正则表达式

\\?((?:\d+)) 

使用正则表达式来处理这个问题: -

Regex oRegex = new Regex(@"\?((?:\d+))"); 
    str = oRegex.Replace(str, "Rs$1"); 
+0

的意思是Regex.Replace? str.Replace搜索字符,而不是正则表达式。 – Default

+0

不工作..... –

+0

@默认:你说得对,它是Regex.Replace。感谢您指点。 –

3

试试这个:

Regex.Replace(str, @"\?(\d)", @"Rs$1") 

它将匹配文字问号后面跟着一个数字和将其替换为Rs后跟该数字。后面跟着非数字的问号保持不变。

例子:

var str = "DFg sdfsdaf ?145 dfgsdf ?fg"; 
Console.Out.WriteLine(Regex.Replace(str, @"\?(\d)", @"Rs$1")); 

输出:

DFg sdfsdaf Rs145 dfgsdf ?fg 
+0

hi..the输出即将DFg sdfsdaf Rs45 dfgsdf?fg .....第一个数字被删除...请帮助 –

+0

感谢您的帮助... –

+2

@mhasan确保您的替换是'“Rs $ 1” '不只是'“Rs”'。 “$ 1”被替换为匹配的数字。 – verdesmarald