2015-04-30 65 views
3

我有一个字符串Test123(45)我想删除括号内的数字。我会怎么做呢?删除字符串的特定部分中的数字(在括号内)

到目前为止,我已经试过如下:

string str = "Test123(45)"; 
string result = Regex.Replace(str, "(\\d)", string.Empty); 

但是这导致的结果测试(),当它应该是Test123()

回答

1
\d+(?=[^(]*\)) 

尝试this.Use与verbatinum模式@ .The先行将确保数量有)没有( it.Replace之前empty string

查看演示。

https://regex101.com/r/uE3cC4/4

+0

非常感谢,这个作品!也是伟大的网站,没有意识到这一点。 – SomeGuy08

+0

@ SomeGuy08:re​​gex101没有处理.NET特定的正则表达式。使用http://regexstorm.net/tester或http://regexhero.net/tester/ –

+2

@ SomeGuy08 ..我会用ASh/fubo的解决方案..它是这个解决方案的简化解决方案,也非常高性能..(需要非常少的步骤..我不认为应该使用lookaheads,除非没有实际的要求) –

1
string str = "Test123(45)"; 
string result = Regex.Replace(str, @"\(\d+\)", "()"); 
+0

'Regex.Replace(str,@“\(\ d + \)”,“()”)'将适用于格式为'(DigitDigitDigit)'的字符串。 [result'()'];如果字符串的格式为'(DigitSomethingDigit)',它不会删除Digits。 [结果'(DigitSomethingDigit)'] – ASh

2

那朵替换所有括号,用括号填满数字

string str = "Test123(45)"; 
string result = Regex.Replace(str, @"\(\d+\)", "()"); 
0

你也可以试试这个方法:

string str = "Test123(45)"; 
     string[] delimiters ={@"("};; 
     string[] split = str.Split(delimiters, StringSplitOptions.None); 
     var b=split[0]+"()"; 
0

删除一个数字,在其实里面括号但不包括圆括号并保留其中的任何其他内容,而非C#中的数字Regex.Replace意味着匹配所有括号子字符串与\([^()]+\)然后删除MatchEvaluator内的所有数字。

这里是一个C# sample program

var str = "Test123(45) and More (5 numbers inside parentheses 123)"; 
var result = Regex.Replace(str, @"\([^()]+\)", m => Regex.Replace(m.Value, @"\d+", string.Empty)); 
// => Test123() and More (numbers inside parentheses) 

要删除括在()符号数字,ASh's \(\d+\) solution将工作做好:\(相匹配的文字(\d+比赛1+数字,\)相匹配的文字)

相关问题