2016-01-21 43 views
-1

我有一個文本文件,如下所示:如何在C#中的文本文件中交換字符串內容?

1 ... 3 4 2  
2 ... 3 21 4 
3 ... 6 4 21 15 
4 ... 14 21 12 

我想編輯這些字符串,使散佈部後的數字對應於每個字符串的第一個數字被分裂。例如,

1 
2 1 
3 1 2 
4 1 2 3 
... 
21 3 4 

我該怎麼做?
注:我從文本文件中獲得第一個數字組,並通過字符串編輯它。之後,我將編輯過的字符串寫入文本文件。鑑於此,我的代碼來獲得的第一個數字組樣品部分設置如下:

 for (var i = 0; i < existingLines.Length; i++) 
     { 
      var split = existingLines[i].Split('\t'); 
      var act = i - 1; 
      var sc1 = int.Parse(split[6]); 
      var sc2 = int.Parse(split[7]); 
      appendedLines.Add(string.Format("{0} {1} {2}", act, sc1, sc2)); 
     } 
+2

你不要解釋結果如何產生,所以不可能提供幫助。此外,標題似乎與問題文本無關 –

+2

您如何計算結果?我無法弄清楚你想如何處理你的號碼 – Marco

+0

@PanagiotisKanavos,號碼是從現有的文本文件中提取的。 – act

回答

2

這個LINQ代碼應該讓你開始

 string path = "c:\\temp\\test.txt"; 

     using (var sr = new StreamReader(path)) 
     { 
      var lines = new List<IEnumerable<int>>(); 

      while (!sr.EndOfStream) 
      { 
       lines.Add(sr.ReadLine().Split(new[] { '.', ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(x => int.Parse(x))); 
      } 

      foreach (var node in lines.SelectMany(x => x).Distinct().OrderBy(x => x)) 
      { 
       var predecessors = lines.Where(x => x.Skip(1).Contains(node)) 
        .Select(x => x.First()) 
        .OrderBy(x => x); 

       Console.WriteLine(node + " " + string.Join(" ", predecessors)); 
      } 
     } 

輸出

2 1 
3 1 2 
4 1 2 3 
6 3 
12 4 
14 4 
15 3 
21 2 3 4 
+0

我覺得很難,很好,解析... –

+0

這是有點故意的。 ;)這是我早上的熱身。如果我得到低估,我會刪除它。 – Seb

+1

爲了上帝的緣故,不!你可能會很好,但它可以分解。 –

相關問題