2015-05-04 101 views
0

我新的C#和我與它包含就跟這個有很多行的.csv文件的工作:C# - 數據處理

2014.02.02.;Name;Adress;Ft;24,32,46,13,15 
2014.02.03.;Name;Adress;Ft;12,30,42,19,11,18 
2014.02.03.;Name;Adress;Ft;61,32,44,42,22,17 
2014.02.04.;Name;Adress;Ft;76,43,42,11,14 .... 

每一道線條都是相似的,除了一個事實,即經過「 FT;」隨機有5或6個數字。

我寫了一個應用程序,它讀取.CSV文件並將其列在控制檯上。

現在我只需要從每行末尾收集數字(可以是5或6),並只將這些數字作爲新行列出到控制檯。 (所以服裝不會改變內容)

我不能寫這個循環,因爲數字的數字總是隨機變化(5或6),我不知道我怎麼能這樣做,但我猜我需要使用子字符串。

你能幫我解決嗎?非常感謝!

+3

請顯示您到目前爲止的代碼 – SanD

回答

1

如何:在控制檯

var lines = File.ReadAllLines("Input.txt"); 

foreach (string line in lines) 
{ 
    var splitBySemiColon = line.Split(';'); 
    List<int> numbersAtEnd = splitBySemiColon 
     .Last() 
     .Split(',') 
     .Select(s => int.Parse(s)) 
     .ToList(); 

    //do whatever you need to with numbersAtEnd... perhaps: foreach (int i in numbersAtEnd) Console.WriteLine(i) 


} 
0
foreach (var row in rows) 
{ 
    var lineElements = row.Split(';'); 
    var numbers = lineElements.Last(); 
    var lastNumber = numbers.Split(',').Last(); 
    Console.WriteLine(lastNumber); 
} 
0
StreamReader sr=new Streameader("myFile.csv"); 

List<int> myNumbers=new List<int>(); 
using (sr) 
{ 
    while (!sr.EndOfStream) 
    { 
     string line=sr.Readline(); 
     int index=line.LastIndexoF(';'); 
     string numbers=sr.Substring(index+1,sr.Length-1-index); 
     string[] num=numbers.Split(','); 
     foreach (string n in num) 
     { 
     myNUmbers.Add(int.Parse(n)); 
     } 

    } 
} 
0
var Lines = System.IO.File.ReadAllLines(@"c:\file.csv").Select(x => x.Split(';')).ToList(); 
Lines.ForEach(x => Console.WriteLine(string.Join("\t", x.Last().Split(',')))); 

輸出:

enter image description here

0

如果SRE存儲在一個字符串變量每一行,並有一個一致,因爲你有mentio ned然後以下是最簡單的方法

string line = "2014.02.02.;Name;Adress;Ft;24,32,46,13,15"; 

    string numbers = line.Substring(line.LastIndexOf(';') + 1);