2011-12-16 71 views
-1

文本文件中的行:如何分割文本文件

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

如何分割线,并得到像L55894M8L55894M9序列号?

+0

在该行的相同点是序列号始终?他们总是第4逗号和第9逗号后发生的? –

+0

将串行总是以L状L55894M8和L55894M9 –

+0

请开始不要前缀您的问题以“C#”。这就是标签的用途。 –

回答

0

在您的样品,你意味着想要得到词语的指数(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(); 
    } 
0

如果该文件是在一个字符串可以使用该字符串的.split(',')方法然后检查所得到的数组的每个元素。或者,如果数据的模式在整个可见抓住每5个元素。

0
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" 
1

要获得的第4个逗号和第9逗号后出现的数据,你会想做的事:

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() }); 
0

尝试正则表达式。

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);