C# 如何从字符串的各个部分检索所有整数?
从字符串中检索整数最有效的方法是什么? 例如,我的输入字符串是“1s 2ss 5rt”,我只想要“1 2 5”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 = "
我正在使用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));
}