我有这个文本文件
1 3 10.1144881901 48.8578515599 340.2980957031 -3.9997586182 -2.0398821492 -56.6352938643
2 1 10.1137751593 48.8575005060 401.4981384277 -11.7762306910 3.4075851669 -92.5498187137
我有这个C#代码来读取数字,我需要第5列并更改该值,然后将所有列保存到新的文本文件。
String pattern = @"(\d+)\t(\d+)\t\s+[-+]?(\d*[.])?\d+\t\s+[-+]?(\d*[.])?\d+\t\s+[-+]?(\d*[.])?\d+";
foreach (Match m in Regex.Matches(line, pattern))
{
string value = m.Groups[5].Value;
}
值字符串仅包含340.而不是340.2980957031 很奇怪m.Groups [0]包含所有数字,包括精度。
答案 0 :(得分:1)
那个正则表达式怎么样:
^([+-]?\d+(\.\d+)?\s+){4}(?<number>[+-]?\d+(\.\d+)?)
您可以通过
访问所有号码match.Groups["number"].Value
十进制数的模式是:[+-]?\d+(\.\d+)?
由于正则表达式的贪婪,它将捕获所有数字。
答案 1 :(得分:0)
我找到了解决方案,这个表达式包括浮点精度
(\d+)\t(\d+)\t\s+[-+]?([0-9]*\.[0-9]+|[0-9]+)\t\s+[-+]?([0-9]*\.[0-9]+|[0-9]+)\t\s+[-+]?([0-9]*\.[0-9]+|[0-9]+)