Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Regex.Matches错误无法从字符转换为字符串_C#_.net_Regex_String - Fatal编程技术网

C# Regex.Matches错误无法从字符转换为字符串

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

我在NET4.5中有一个c#代码,用于读取如下所示的文本文件:

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)
。或者更可能的情况是,假设这是一种以制表符分隔的固定宽度格式,则只需在制表符上拆分并在需要时修剪空格。