我有以下产生MatchCollection的代码:
var tmp3 = myregex.Matches(text_to_split);
Matches
中的tmp3
是93.4
和-276.2
等字符串。我真正需要的是将此MatchCollection转换为双精度数组。怎么办呢?
答案 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方法,但如果您的正则表达式足够好并且您确保字符串格式正确,那么您应该没问题