C# 如何从字符串的各个部分检索所有整数?

C# 如何从字符串的各个部分检索所有整数?,c#,.net,parsing,C#,.net,Parsing,从字符串中检索整数最有效的方法是什么? 例如,我的输入字符串是“1s 2ss 5rt”,我只想要“1 2 5” 我正在使用C#和.NET framework我在谷歌搜索“C#regex从字符串中获取数字”中找到了它 这是最有效的方法: using System; using System.Text.RegularExpressions; class Program { static void Main() { const string input = "

从字符串中检索整数最有效的方法是什么? 例如,我的输入字符串是“1s 2ss 5rt”,我只想要“1 2 5”
我正在使用C#和.NET framework

我在谷歌搜索“C#regex从字符串中获取数字”中找到了它

这是最有效的方法:

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        const string input = "There are 4 numbers in this string: 40, 30, and 10.";
        // Split on one or more non-digit characters.
        string[] numbers = Regex.Split(input, @"\D+");
        foreach (string value in numbers)
        {
            if (!string.IsNullOrEmpty(value))
            {
                int i = int.Parse(value);
                Console.WriteLine("Number: {0}", i);
            }
        }
    }
}
输出

编号:4
编号:40
编号:30
电话:10


正则表达式非常昂贵,因此最有效的方法是for循环和IsDigit(但是有几个泰国字符偷偷地通过IsDigit检查)

String s=“1s 2s 5rt”;
List DigitInstring=新列表();
foreach(字符c在s中)
{
if(Char.IsDigit(c))digitsInString.Add(Convert.ToInt32(c));
}

你对此做了哪些研究?
\d+
?该示例是您正在处理的字符串的良好表示吗?当需要样本时,始终将您正在编写(但不起作用)的代码与好的样本一起发布。Linq中的解决方案,
List digitsInString=s.tocharray()。其中(c=>Char.IsDigit(c)).ToList()@prasadelkikikar nice one,唯一的问题是LINQ比for循环慢一点点,而且它仍然存在IsDigit检查中泰国字符的问题。
String s = "1s 2ss 5rt";
List<int> digitsInString = new List<int>();
foreach (char c in s)
{
    if (Char.IsDigit(c)) digitsInString.Add(Convert.ToInt32(c));
}