从字符串中获取所有数字的最佳方法

发布于 2024-08-28 23:55:55 字数 342 浏览 4 评论 0原文

有没有比这样做更好的方法来获取诸如“(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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

债姬 2024-09-04 23:55:55

您需要使用正则表达式吗?

return new String(input.Where(Char.IsDigit).ToArray());

Do you need to use a Regex?

return new String(input.Where(Char.IsDigit).ToArray());
陌生 2024-09-04 23:55:55

您对Replace有什么看法吗?

return Regex.Replace(input, @"[^0-9]+", "");

Have you got something against Replace?

return Regex.Replace(input, @"[^0-9]+", "");
吃不饱 2024-09-04 23:55:55

您需要将 /\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

You'll want to replace /\D/ (non-digit) with '' (empty string)

Regex r = new Regex(@"\D");
string s = Regex.Replace("(123) 455-2344", r, "");

Or more succinctly:

string s = Regex.Replace("(123) 455-2344", @"\D",""); //return only numbers from string
柠栀 2024-09-04 23:55:55

只需删除所有非数字:

var result = Regex.Replace(input, @"\D", "");

Just remove all non-digits:

var result = Regex.Replace(input, @"\D", "");
豆芽 2024-09-04 23:55:55

在 perl 中(您可以将其改编为 C#),

$str =~ s/[^0-9]//g; 

我只是假设您的字符串位于 $str.基本思想是将所有非数字替换为 '' (即空字符串)

In perl (you can adapt this to C#) simply do

$str =~ s/[^0-9]//g; 

I am assuming that your string is in $str. Basic idea is to replace all non digits with '' (i.e. empty string)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文