C# Regex.Matches错误无法从字符转换为字符串
我在NET4.5中有一个c#代码,用于读取如下所示的文本文件:C# Regex.Matches错误无法从字符转换为字符串,c#,.net,regex,string,C#,.net,Regex,String,我在NET4.5中有一个c#代码,用于读取如下所示的文本文件: 1 3 10.1144881901 48.8578515599 340.2980957031 -3.9997586182 -2.0398821492 -56.6352938643 2 1 10.1137751593 48.8575005060 401.498
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
我想换第五排的号码
这是密码
while ((line = file.ReadLine()) != null)
{
String pattern = @"(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)";
foreach (var expression in line)
foreach (Match m in Regex.Matches(expression, pattern))
{
double value = Double.Parse(m.Groups[5].Value);
}
}
我得到了这些编译错误:
错误CS1502:“System.Text.RegularExpressions.Regex.Matches(string,string)”的最佳重载方法匹配项具有一些无效参数
错误CS1503:参数1:无法从“char”转换为“string”摆脱外部foreach:
while ((line = file.ReadLine()) != null)
{
String pattern = @"(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)";
foreach (Match m in Regex.Matches(line, pattern))
{
double value = Double.Parse(m.Groups[5].Value);
}
}
您正在对字符串进行迭代,该字符串是一个字符数组。去掉外部foreach:
while ((line = file.ReadLine()) != null)
{
String pattern = @"(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)";
foreach (Match m in Regex.Matches(line, pattern))
{
double value = Double.Parse(m.Groups[5].Value);
}
}
您正在对字符串进行迭代,该字符串是一个字符数组。去掉外部foreach:
while ((line = file.ReadLine()) != null)
{
String pattern = @"(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)";
foreach (Match m in Regex.Matches(line, pattern))
{
double value = Double.Parse(m.Groups[5].Value);
}
}
您正在对字符串进行迭代,该字符串是一个字符数组。去掉外部foreach:
while ((line = file.ReadLine()) != null)
{
String pattern = @"(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)";
foreach (Match m in Regex.Matches(line, pattern))
{
double value = Double.Parse(m.Groups[5].Value);
}
}
您正在迭代字符串,它是一个字符数组。您可以使用
string.Split
而不是正则表达式。但是数字之间有制表符和空格,我不知道Split是否适用于可变数量的制表符或数字之间的空格。Jonesopolis的答案是,或多或少,如果列中的值从不为空,则可以使用line.Split(new[]{'','\t'},StringSplitOptions.removeMptyEntries)
。或者更可能的情况是,假设这是一种以制表符分隔的固定宽度格式,则只需在制表符上拆分并在需要时修剪空格。您可以使用string.split
而不是正则表达式。但是数字之间有制表符和空格,我不知道拆分是否适用于可变数量的制表符或数字之间的空格。Jonesopolis答案或多或少是您想要的。如果列中的值从不为空,您可以使用line.Split(new[]{','\t'},StringSplitOptions.removeMptyEntries)
。或者更可能的情况是,假设这是一种以制表符分隔的固定宽度格式,则只需在制表符上拆分并在需要时修剪空格。您可以使用string.split
而不是正则表达式。但是数字之间有制表符和空格,我不知道拆分是否适用于可变数量的制表符或数字之间的空格。Jonesopolis答案或多或少是您想要的。如果列中的值从不为空,您可以使用line.Split(new[]{','\t'},StringSplitOptions.removeMptyEntries)
。或者更可能的情况是,假设这是一种以制表符分隔的固定宽度格式,则只需在制表符上拆分并在需要时修剪空格。您可以使用string.split
而不是正则表达式。但是数字之间有制表符和空格,我不知道拆分是否适用于可变数量的制表符或数字之间的空格。Jonesopolis答案或多或少是您想要的。如果列中的值从不为空,您可以使用line.Split(new[]{','\t'},StringSplitOptions.removeMptyEntries)
。或者更可能的情况是,假设这是一种以制表符分隔的固定宽度格式,则只需在制表符上拆分并在需要时修剪空格。