【发布时间】:2015-04-30 07:14:07
【问题描述】:
我有一个字符串 Test123(45),我想删除括号内的数字。我该怎么做呢?
到目前为止,我已经尝试了以下方法:
string str = "Test123(45)";
string result = Regex.Replace(str, "(\\d)", string.Empty);
然而,这会导致结果 Test(),而它应该是 Test123()。
【问题讨论】:
我有一个字符串 Test123(45),我想删除括号内的数字。我该怎么做呢?
到目前为止,我已经尝试了以下方法:
string str = "Test123(45)";
string result = Regex.Replace(str, "(\\d)", string.Empty);
然而,这会导致结果 Test(),而它应该是 Test123()。
【问题讨论】:
tis 替换所有括号,用括号填充数字
string str = "Test123(45)";
string result = Regex.Replace(str, @"\(\d+\)", "()");
【讨论】:
\d+(?=[^(]*\))
试试这个。与verbatinum模式一起使用@。前瞻将确保数字有)而没有(。替换为empty string。
查看演示。
【讨论】:
test 444)。如果在右圆括号之前跟有字母,它甚至会替换一个数字:test 444string)。如果这些情况都可以,那么我没有问题。 :)
string str = "Test123(45)";
string result = Regex.Replace(str, @"\(\d+\)", "()");
【讨论】:
Regex.Replace(str, @"\(\d+\)", "()") 将适用于格式为(DigitDigitDigit) 的字符串; [结果()];如果字符串格式为(DigitSomethingDigit),则不会删除数字; [结果(DigitSomethingDigit)]
你也可以这样试试:
string str = "Test123(45)";
string[] delimiters ={@"("};;
string[] split = str.Split(delimiters, StringSplitOptions.None);
var b=split[0]+"()";
【讨论】:
删除一个实际上是在括号内的数字,但不是括号,并在其中保留不是数字的任何其他内容,C# Regex.Replace 表示 将所有带括号的子字符串与\([^()]+\) 匹配,然后删除MatchEvaluator 内的所有数字。
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+ 个数字,\) 匹配一个文字)。
【讨论】: