gpt4 book ai didi

c# - 在满足条件之前查找值

转载 作者:太空宇宙 更新时间:2023-11-03 22:32:24 24 4
gpt4 key购买 nike

有没有办法简化下面的代码,让它看起来更清晰、更优雅?

以下代码使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com