C#从字符串中提取多个数字

7

我正在尝试从一个具有大量格式的字符串中提取不同长度的整数。所涉及的字符串可能如下所示:

string s = "Hallo (221122321 434334 more text3434 even mor,34343 343421.343sf 343";

我要的输出是一个数组,包括以下内容:
{221122321,434334,3434,34343,343421,343,343}
2个回答

25
var result = new Regex(@"\d+").Matches(s)
                              .Cast<Match>()
                              .Select(m => Int32.Parse(m.Value))
                              .ToArray();

2
非常好的解决方案 +1 - Soner Gönül
1
非常好的解决方案,但我会将.OfType<Match>更改为.Cast<Match>,以更好地表明我期望所有匹配项实际上都是Match类型(它们不能是任何其他类型)。 - Matthew Watson
1
你想把 m => m.Value 改成 m => Int32.Parse(m.Value) 吗?这样你就可以得到一个整数数组,而不是字符串数组了。(期望输出中没有引号。) - Idle_Mind
1
绝妙的解决方案。谢谢。 - Ásgeir Gunnar Stefánsson
1
非常优雅的解决方案,经过更新现在更加出色! - FunMatters

-1
使用如下的foreach循环:
string result = "";

foreach (string str in s)
{
    int number;
    if (int.TryParse(str, out number))
       result += s;
    else
       result += ",";
}

2
这样做不起作用,也不会产生一个数组。 - Wagner Leonardi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接