【问题标题】:c# Extract multiple numbers from a stringc# 从一个字符串中提取多个数字
【发布时间】:2013-11-04 13:17:28
【问题描述】:

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

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

我正在寻找的输出是一个数组:

{221122321,434334,3434,34343,343421,343,343}

【问题讨论】:

    标签: c# regex parsing


    【解决方案1】:
    var result = new Regex(@"\d+").Matches(s)
                                  .Cast<Match>()
                                  .Select(m => Int32.Parse(m.Value))
                                  .ToArray();
    

    【讨论】:

    • 非常好的解决方案+1
    • 优秀的解决方案,但我会将.OfType&lt;Match&gt; 更改为.Cast&lt;Match&gt; 以更好地表明我希望所有匹配项实际上都是Match 类型(它们不能是任何其他类型)。
    • 您不想将m =&gt; m.Value 更改为m =&gt; Int32.Parse(m.Value),这样您就有了一个int 数组,而不是字符串数组吗? (所需输出中没有引号。)
    • 很棒的解决方案。谢谢
    • 非常优雅的解决方案,现在更新后更好!
    【解决方案2】:

    使用这样的 foreach 循环:

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

    【讨论】:

    • 这行不通,也不会产生数组。
    猜你喜欢
    • 1970-01-01
    • 2021-01-09
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多