C# - 解析一行文字 - 最好的方法是什么?

时间:2010-02-11 16:00:52

标签: c#

  

可能重复:
  Parse multiple doubles from string in C#

假设我有一行文字如下:

“45.690 24.1023 .09223 4.1334”

在C#中,从这一行中提取数字的最有效方法是什么?每个数字之间的空格数量各不相同,并且在行与行之间无法预测。我必须这样做几千次,所以效率是关键。

感谢。

4 个答案:

答案 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);