有没有办法简化下面的代码,让它看起来更清晰、更优雅?
以下代码使用 Linq 和正则表达式返回在文本集合中找到的值集合:
IEnumerable<double> _results = pages.Select(result => {
Regex _regex = new Regex("<my regex here>", RegexOptions.None);
MatchCollection _matches = _regex.Matches(result);
double _number = 0.0;
foreach (Match _match in _matches) {
if (_match.Groups["value"].Value.Contains("("))
break;
else
double.TryParse(_match.Groups["value"].Value, out _number);
}
return _number;
});
如您所见,正则表达式很棘手,它基本上返回在满足条件之前在每个文本中找到的最后一个值,这就是所需的结果。
如何简化以前的代码以寻求优雅?内存和 CPU 利用率不是问题。
最佳答案
我会这样做,如果我正确理解您的代码,此语法在 C#7.0 中有效,带有内联 out
变量声明:
Regex _regex = new Regex("<my regex here>", RegexOptions.None);
IEnumerable<double> _results = pages.Select(_regex.Matches)
.Where(match => !match.Groups["Value"].Value.Contains("("))
.Select(match => double.TryParse(match.Groups["Value"].Value, out double number) ? number : number);
关于c# - 在满足条件之前查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56822340/