2015-10-21 32 views
0

我有這個文件叫text.txt。它包含立陶宛語文本。我做了編碼1257因此它可以讀取立陶宛字母。 現在我所要做的就是爲該文件中使用的每個立陶宛字母組成一個數組。這應該顯示每個字母在文本中重複多少次,並將這些結果寫入新的txt文件。 到目前爲止,我想出了這個主意:C#數組特定字母到一個txt文件

public static int[ ] Letters(string a) { 
    string p = "AĄBCČDEĘĖFGHIĮYJKLMNOPRSŠTUŲŪVZŽ"; // Lithuanian letters 
    int [ ]rez = new int[p.Length]; 
    int ind = 0; 
    foreach (char r in a) { 
     ind = p.IndexOf(r); 
     if (ind>=0) 
      rez[ind] ++; 
    } 
    return rez; 
} 

我認爲這會一開始工作,但是我不和我找不到原因。

+0

它適合我。你需要返回哪個字母有什麼計數,因爲這只是返回一個整數的數組,按照首先發現的任何字母的順序? –

+0

您發佈的代碼很好。請提供[一個很好的,_minimal_,_complete_代碼示例](https://stackoverflow.com/help/mcve),它可以可靠地重現您想要幫助的問題,並提供關於代碼的詳細說明以及如何實現不同於你想要它做的。請記住,「它不起作用」不是一個明確的問題陳述。 –

回答

2
public static Dictionary<string, int> Letters(string a) 
{ 
    Dictionary<string, int> letters = new Dictionary<string, int>(); 
    string p = "AĄBCČDEĘĖFGHIĮYJKLMNOPRSŠTUŲŪVZŽ"; // Lithuanian letters 
    int ind = -1; 
    foreach (char r in a) 
    { 
     ind = p.IndexOf(r); 
     if (ind >= 0) 
     { 
      if (letters.ContainsKey(r.ToString())) 
      { 
       letters[r.ToString()] = letters[r.ToString()] + 1; 
      } 
      else 
      { 
       letters.Add(r.ToString(), 1); 
      } 

     } 
    } 
    return letters; 
} 
+2

Nit:你應該使用'TryGetValue()',利用這樣一個事實,即如果鍵不存在,返回的默認值將是'0',而不是首先檢查鍵值,然後檢索值(雙查找) 。對於小投入,這並不重要,但是這是一個更好的先例,並且將確保大投入的有效操作。 –