Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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# 如何拆分文本文件中的行_C#_Split_Comma - Fatal编程技术网

C# 如何拆分文本文件中的行

C# 如何拆分文本文件中的行,c#,split,comma,C#,Split,Comma,文本文件: $3.00,0.00,0.00,1.00,L55894M8,$3.00,0.00,0.00,2.00,L55894M9 如何拆分行并获取序列号,如L55894M8和L55894M9?如果文件位于字符串中,则可以使用字符串的.split(',')方法,然后检查结果数组的每个元素。或者,如果数据模式贯穿始终,则抓取每5个元素。要获取出现在第4个逗号和第9个逗号之后的数据,您需要执行以下操作: var str = "$3.00,0.00,0.00,1.00,L55894M8,$3.00,

文本文件:

$3.00,0.00,0.00,1.00,L55894M8,$3.00,0.00,0.00,2.00,L55894M9

如何拆分行并获取序列号,如
L55894M8
L55894M9

如果文件位于字符串中,则可以使用字符串的
.split(',')
方法,然后检查结果数组的每个元素。或者,如果数据模式贯穿始终,则抓取每5个元素。

要获取出现在第4个逗号和第9个逗号之后的数据,您需要执行以下操作:

var str = "$3.00,0.00,0.00,1.00,L55894M8,$3.00,0.00,0.00,2.00,L55894M9";
var fieldArray = str.Split(new[] { ',' });
var serial1 = fieldArray[4];  // "L55894M8"
var serial2 = fieldArray[9];  // "L55894M9"
var pieces = line.Split(',');
var serial1 = line[3];
var serial2 = line[8];
编辑:进一步思考后,您的文件似乎有以$开头、以下一条记录结尾的记录。如果需要这些记录以及序列号(似乎是最后一个字段),可以执行以下操作:

var records = line.TrimStart('$').Split('$');
var recordObjects = records.Select(r => new { Line = r, Serial = r.TrimEnd(',').Split(',').Last() });

试试正则表达式

 string str = "$3.00,0.00,0.00,1.00,L55894M8,$3.00,0.00,0.00,2.00,L55894M9";
 string pat = @"L[\w]+";

 MatchCollection ar=  Regex.Matches(str, pat);

 foreach (var t in ar)
     Console.WriteLine(t);

在您的示例中,您的意思是希望获得索引(4、9、14…)中的单词

这五个字作为一个聚会

所以你可以试试这个方法

    static void Main(string[] args)
    {
        string strSample = "$3.00,0.00,0.00,1.00,L55894M8,$3.00,0.00,0.00,2.00,L55894M9";
        var result = from p in strSample.Split(',').Select((v, i) => new { Index = i, Value = v })
                     where p.Index % 5 == 4
                     select p.Value;

        foreach (var r in result)
        {
            Console.WriteLine(r);
        }

        Console.ReadKey();
    }

序列号是否总是在同一行的同一点上?它们是否总是出现在第4个逗号和第9个逗号之后?您的序列号是否总是以L开头,如L55894M8和L55894M9请不要在您的问题前面加上“C:”。这就是标签的作用。如果你用谷歌搜索“c#split line”,你就会得到答案。序列号总是不同的。但是序列号总是在同一条线上