这个问题在这里已有答案:
有没有更好的方法来获取一个字符串,如“(123)455-2344”并从中得到“1234552344”而不是这样做:
var matches = Regex.Matches(input, @"[0-9]+", RegexOptions.Compiled);
return String.Join(string.Empty, matches.Cast<Match>()
.Select(x => x.Value).ToArray());
也许一个正则表达式模式可以在一场比赛中做到这一点?我似乎无法创造一个来实现这一目标。
你需要使用正则表达式吗?
return new String(input.Where(Char.IsDigit).ToArray());
你有没有对抗Replace
的东西?
return Regex.Replace(input, @"[^0-9]+", "");
你想要用/\D/
(空字符串)替换''
(非数字)
Regex r = new Regex(@"\D");
string s = Regex.Replace("(123) 455-2344", r, "");
或者更简洁:
string s = Regex.Replace("(123) 455-2344", @"\D",""); //return only numbers from string
只需删除所有非数字:
var result = Regex.Replace(input, @"\D", "");
在perl中(你可以将其改编为C#)就行了
$str =~ s/[^0-9]//g;
我假设你的字符串在$ str。基本思路是用''替换所有非数字(即空字符串)