2015-10-21 37 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',而不是首先检查键值,然后检索值(双查找) 。对于小投入,这并不重要,但是这是一个更好的先例,并且将确保大投入的有效操作。 –