假设我有一行文字如下:
“45.690 24.1023 .09223 4.1334”
在C#中,从这一行中提取数字的最有效方法是什么?每个数字之间的空格数量各不相同,并且在行与行之间无法预测。我必须这样做几千次,所以效率是关键。
感谢。
答案 0 :(得分:5)
IEnumerable<double> doubles = s.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
.Select<string, double>(double.Parse)
更新为使用StringSplitOptions.RemoveEmptyEntries,因为空格数不同
答案 1 :(得分:2)
使用正则表达式拆分。这将允许您拆分数字之间任何长度的任何空格:
string input = "45.690 24.1023 .09223 4.1334";
string pattern = "\\s*"; // Split on whitepsace
string[] substrings = Regex.Split(input, pattern);
foreach (string match in substrings)
{
Console.WriteLine("'{0}'", match);
}
答案 2 :(得分:0)
我没有测量过,但如果你想提高效率,那么简单就是关键,所以可能就像
var chars = new List<char>();
for( int i =0; i < numChars; ++i )
if( char.IsDigit( text[i] ) )
chars.Add(text[i]);
答案 3 :(得分:0)
你想要高效.....
var regex = new Regex(@"([\d\.]+)", RegexOptions.Compiled)
var matches = regex.Matches(input);