2014-08-27 51 views
0

我想從文本中讀取行,直到逗號和我要使用逗號的兩側。第一個分鐘,其他部分爲角度。像這樣的文字:如何閱讀,直到從文本C中看到','#

0.34,34.3 
0.46,32.5 
0.56,36.7 

我想分開這些行,但它沒有這樣工作;

String[] lines = File.ReadAllLines("turn.txt"); 
     string[] parts = new String[]{""}; 
     foreach (string line in lines) 
     { 
      parts = line.Split(','); 
      //Console.WriteLine(line); 
     } 

     foreach (string part in parts) 
     { 

      Console.WriteLine(part); 
     } 

輸出結果只給出「時間」一側的第一行和最後一行。我怎樣才能獲得所有的價值?

+0

......會發生什麼? – Robert 2014-08-27 11:20:48

+1

只需聲明部分爲'string [] parts'。無需初始化它。 – 2014-08-27 11:21:34

+0

請更清楚。停止什麼?你已經讀過所有的行。停止打印?什麼時候?當一行包含逗號?只需在第一個「foreach」中添加「if(parts.Length> 1)break」。順便說一下,這將只用逗號打印第一行。如果你想打印它們,你必須將'parts'製成'List '(將Split()'結果或'line'本身添加到這個集合中)。 – 2014-08-27 11:21:36

回答

2

您發佈的代碼不會讓您感興趣,我不確定您要做什麼。

String[] lines = File.ReadAllLines("turn.txt"); 
    foreach (string line in lines) 
    { 
     String[] parts = line.Split(','); 
     //Console.WriteLine(line); 
     foreach (string part in parts) 
     { 
      Console.WriteLine(part); 
     } 
    } 

你的代碼是幹什麼的,是它將永遠只到最後一行的部分運行,因爲你只有在第一個完成到第二foreach,這意味着該文本的最後一行文件。

如果從另一方面想,直到你到達一個逗號一行讀線,您正在尋找這樣的事情,而不是:

String[] lines = File.ReadAllLines("turn.txt"); 
String[] parts = new String[] {}; 
    foreach (string line in lines) 
    { 
     parts = line.Split(','); 
     if (parts.length > 1) { 
      break; 
     } 
     //Console.WriteLine(line); 
    } 
    foreach (string part in parts) 
    { 
     Console.WriteLine(part); 
    } 
1

第一個問題,部分將只包含從零件最後一行。因爲你每次都設置它。 部分應該是一個數組的數組,更.netish辦法做到這一點是通過使用列表

List<string[]> parts = new List<string[]>(); 
    foreach (string line in lines) 
    { 
     parts.add(line.Split(',')); 
    } 

    foreach (string[] part in parts) 
    { 
     foreach (string p in part) 
     { 
     Console.WriteLine(p); 
     } 
    } 
+0

'System.String [] System.String [] System.String []'...數組沒有重載的'ToString()'無論如何打印他們的內容+1的概念是清晰的! ;) – 2014-08-27 11:31:37

0

除了安德烈亞斯的答案,你可以讓數組的數組二維數組是這樣的:

string[][] parts 

二維數組的第一維必須具有文本中行數的長度。第二維存儲字符串,由','字符分隔。

String[] lines = File.ReadAllLines("turn.txt"); 
string[][] parts = new String[lines.Length][]; 
int counter = 0; 
foreach (string line in lines) 
{ 
    parts[counter++] = line.Split(','); 
} 

表明您可以使用安德烈亞斯答案做到這一點的結果是:

foreach (string[] part in parts) 
{ 
    foreach (string p in part) 
    { 
     Console.Write(p + " "); 
    } 
    Console.WriteLine(); 
}