2016-11-20 211 views
0

我目前正在嘗試採取一個不按字母順序排列的單詞文件,重新排序這些單詞以便它們按字母順序排列(我試圖使用非內置排序方法),然後將新排序的列表寫入新的txt文件(必須創建一個文件)。例如,假設txt文件中只有五個詞如下「dog bat apple rabbit cat」。我希望程序按字母順序將它們賦值,然後創建一個保存該順序的txt文件。截至目前,程序將遍歷txt文件,但不會將重新排序的列表保存到新的txt文件中。什麼是保存到新文件是這樣的...「System.Collections.Generic.List`1 [System.String]」 真相告訴,我不是很聰明的C#呢,所以我道歉,如果我的結構或編碼不是很好。無序的原始文件稱爲「混亂的英文FILTERED.ALL.txt」,我試圖寫入的文件稱爲「english FILTERED.ALL.txt」。麻煩讀取和寫入文件c#

static void Main(string[] args) 
    { 
     // declaring integer for minimum. 
     int min = 0; 
     // declare the list for the original file 
     List<string> LinuxWords = new List<string>(); 
     List<string> lexicalOrder = new List<string>(); 
     // read the text from the file 
     string[] lines = System.IO.File.ReadAllLines("jumbled english FILTERED.ALL.txt"); 
     string line = string.Empty; 
     // seperate each word into a string 
     //foreach (string line in lines) 
     //{ 

      //add each word into the list. 
      //LinuxWords.Add(line); 
     //} 

     for (int i = 0; i < lines.Length - 1; i++) 
     { 
      for (int j = i + 1; j < lines.Length; j++) 
      { 
       if (lines[i].Length < lines[j].Length) 
       { 
        min = lines[i].Length; 
       } 
       else 
       { 
        min = lines[j].Length; 
       } 
       for (int k = 0; k < min; k++) 
       { 
        if (lines[i][k] > lines[j][k]) 
        { 
         line = lines[i].ToString(); 
         lines[i] = lines[j]; 
         lines[j] = line; 
         break; 
        } 
        else if (lines[i][k] == lines[j][k]) 
        { 
         continue; 
        } 
        else 
        { 
         break; 
        } 
       } 
      } 
     } 
     for (int i = 0; i < lines.Length; i++) 
     { 
      Console.WriteLine("The program is formatting the correct order"); 
      lexicalOrder.Add(lines[i]); 

     } 
     //lexicalOrder.ForEach(Console.WriteLine); 
     //} 
     //LinuxWords.ForEach(Console.WriteLine); 

     File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + "english FILTERED.ALL.txt", 
       lexicalOrder.ToString()); 



     // write the ordered list back into another .txt file named "english FILTERED.ALL.txt" 
     // System.IO.File.WriteAllLines("english FILTERED.ALL.txt", lexicalOrder); 
     Console.WriteLine("Finished"); 
    } 
+0

什麼是「混亂英語FILTERED.ALL.txt」格式?我們可以舉一個摘錄作爲例子嗎?期望的結果是什麼? –

+0

你是什麼意思*它不允許我進入我的代碼*? – Searching

+0

防止 昏昏欲睡 克里斯蒂 蜂鳴器 engird 孝順 弱 扶梯 公馬 singingly – JimmyDean

回答

0

假設你的意思是你沒有得到保存列表(如果這不是問題 - 請更具體) - 你需要改變

lexicalOrder.ToString() 

喜歡的東西

lexicalOrder.Aggregate((s1, s2) => s1 + " " + s2) 
+0

您是否介意解釋完全正確,以便我有更好的理解?我相信這些被稱爲代表?我想知道它究竟做了什麼,這樣我就可以學會將其納入其他項目中。先謝謝你! – JimmyDean

+0

@JimmyDean代表基本上是一種方法。在這種情況下,'Aggregate'需要一種方法來告訴它如何從兩個字符串中創建一個結果字符串。因爲這就是Aggregate所做的 - 從第一個和第二個創建第三個字符串,然後從該結果和第三個字符串中創建一個字符串。然後從這個結果和第四個...我給它一個簡單的 - 添加第一個和一個空間和第二個。但是你不需要使用Aggregate,你可以編寫自己的方法來從字符串列表而不是Aggregate中創建一個字符串。 – ispiro