将MatchCollection转换为双精度数组

时间:2011-03-20 21:05:50

标签: c# regex

我有以下产生MatchCollection的代码:

var tmp3 = myregex.Matches(text_to_split);

Matches中的tmp393.4-276.2等字符串。我真正需要的是将此MatchCollection转换为双精度数组。怎么办呢?

1 个答案:

答案 0 :(得分:5)

您可以使用double.Parse方法将字符串转换为double:

var tmp3 = myregex.Matches(text_to_split);
foreach (Match match in tmp3)
{
    double value = double.Parse(match.Value);
    // TODO : do something with the matches value
}

如果您是像我这样的LINQ和函数编程爱好者,您可以保存无用循环并直接将MatchCollection转换为IEnumerable<double>

var tmp3 = myregex.Matches(text_to_split);
var values = tmp3.Cast<Match>().Select(x => double.Parse(x.Value));

如果您需要静态数组,则可能需要进行额外的.ToArray()调用:

var tmp3 = myregex.Matches(text_to_split);
var values = tmp3.Cast<Match>().Select(x => double.Parse(x.Value)).ToArray();

如果您想要安全转换,可以使用double.TryParse方法,但如果您的正则表达式足够好并且您确保字符串格式正确,那么您应该没问题