2012-03-08 64 views
0

嗨,我知道的標題聽起來有點混亂,但即時閱讀的文本文件數據的多線分裂從一個文本文件中的字符串到另一個列表

Example 
12345 Test 
34567 Test2 

我在文本1號線在讀時間和添加到列表

using (StreamReader reader = new StreamReader("Test.txt")) 
        { 

         string line; 
         while ((line = reader.ReadLine()) != null) 
         { 
          list.Add(line); 

        } 

       } 

我如何然後從測試分離1234,所以我可以僅拉出數據的第一列,如果我需要像列表(1).pars [1]將是12345和列表(2).pars [2]將是test2

我知道這聽起來雲裏霧裏,但我希望有人在那裏瞭解到

回答

1

如果你確定具有字符串列表[]的,你可以簡單地做這個:

 var list = new List<string[]>(); 
     using (StreamReader reader = new StreamReader("Test.txt")) 
     { 
      string line; 
      while ((line = reader.ReadLine()) != null) 
      { 
       list.Add(line.Split(' ')); 
      } 
     } 

     string firstWord = list[0][0]; //12345 
     string secondWord = list[0][1]; //Test 
2

也許是這樣的:

string test="12345 Test"; 
var ls= test.Split(' '); 

這將讓你的字符串的數組。你可以用ls[0]ls[1]來獲得它們。

如果你只是12345然後ls[0]是一個選擇。

+1

...我想你的意思是0和1,而不是1&2,對不對? – 2012-03-08 21:42:10

+0

然後我會如何選擇顯示位,所以如果我只想要12345顯示? – 2012-03-08 21:42:51

+0

更新答案 – Arion 2012-03-08 21:46:40

1

當你有一個文本字符串,你可以使用Split()方法來分割它的很多部分。如果您是確保每個單詞(由一個或多個空格分隔)是你可以簡單地寫專欄:

string[] columns = line.Split(' '); 

有該功能的幾個重載,你可以指定是否空白字段被跳過(你可以有,例如columns[1]在由2個詞組成的行中空,但由兩個空格分隔)。如果你確定了列的數量,你也可以修改這個限制(所以如果最後一列之後的任何文本將被視爲單個字段)。

你的情況(添加到列表中只有第一列),你可能會寫:

if (String.IsNullOrWhiteSpace(line)) 
continue; 

string[] columns = line.TrimLeft().Split(new char[] { ' ' }, 2); 
list.Add(columns[0]); 

首先檢查是跳過只是空格組成的空或線條。 TrimLeft()用於刪除行首(如果有)的空格。第一列不能爲空(因爲TrimLeft()所以你甚至不需要使用StringSplitOptions.RemoveEmptyEntriesif (columns.Length > 1)最後,如果文件足夠小,你可以通過一次調用File.ReadAllLines()來讀取它,並簡化所有的操作LINQ的一點:

list.Add(
File.ReadAllLines("test.txt") 
.Where(x => !String.IsNullOrWhiteSpace(x)) 
.Select(x => x.TrimLeft().Split(new char[] { ' ' }, 2)[0])); 

注意,與第一個參數,你可以指定一個以上的有效分離

0

當你有多個空格

Regex r = new Regex(" +"); 
string [] splitString = r.Split(stringWithMultipleSpaces); 
0
var splitted = System.IO.File.ReadAllLines("Test.txt") 
     .Select(line => line.Split(' ')).ToArray(); 
    var list1 = splitted.Select(split_line => split_line[0]).ToArray(); 
    var list2 = splitted.Select(split_line => split_line[1]).ToArray(); 
相關問題