从字符串中获取所有数字的最佳方法
有没有比这样做更好的方法来获取诸如“(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());
也许可以在单个匹配中完成此操作的正则表达式模式?但我似乎无法创建一个来实现这一目标。
Is there any better way to get take a string such as "(123) 455-2344" and get "1234552344" from it than doing this:
var matches = Regex.Matches(input, @"[0-9]+", RegexOptions.Compiled);
return String.Join(string.Empty, matches.Cast<Match>()
.Select(x => x.Value).ToArray());
Perhaps a regex pattern that can do it in a single match? I couldn't seem to create one to achieve that though.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您需要使用正则表达式吗?
Do you need to use a Regex?
您对
Replace
有什么看法吗?Have you got something against
Replace
?您需要将
/\D/
(非数字)替换为''
(空字符串)或更简洁:
You'll want to replace
/\D/
(non-digit) with''
(empty string)Or more succinctly:
只需删除所有非数字:
Just remove all non-digits:
在 perl 中(您可以将其改编为 C#),
我只是假设您的字符串位于 $str.基本思想是将所有非数字替换为 '' (即空字符串)
In perl (you can adapt this to C#) simply do
I am assuming that your string is in $str. Basic idea is to replace all non digits with '' (i.e. empty string)