2015-06-20 57 views
0

嘿我想知道如何變成一個for循環,所以我沒有這26倍複製的每個字母:我如何將它變成for循環?

count[1] = str.Split('A').Length - 1; 
Console.WriteLine("A comes up x " + count[1]); 

計數是空白的整數陣列,採用26個值,表示字母表中的字母在字符串str中的存儲時間,存儲在名爲字母的字符串數組中

+0

暗示:具有以與陣列[「A」,「B」,...]和循環遍歷該或像這樣http://stackoverflow.com/questions/289792/int-to-char-in-c-sharp – dbarnes

+0

謝謝對不起,我忘了提及一個叫做字母的字符串數組,有所有這些 –

回答

4

而不是分割並創建新數組,我將使用Count()函數。然後你可以遍歷每個字符,或循環你現有的數組。

for (char c = 'A'; c <= 'Z'; c++) 
{ 
    Console.WriteLine(c + " comes up x " + str.Count(x => char.ToUpper(x) == c)); 
} 
+0

你贏了。老實說,不知道你可以在'char'上'++' – Jonesopolis

0

這裏有一個:

static void Main(string[] args) 
{ 
    var letters = "abcdefghijklmnopqrstuvwxyz"; 
    var str = "the quick brown fox jumps over the lazy dog"; 

    for (int i = 0; i < letters.Length; i++) 
     Console.WriteLine("{0} comes up {1} time(s)", letters[i], str.ToLower().Split(letters[i]).Length - 1); 

    Console.Read(); 

} 
0

您可以使用陣列來存儲計數的每個字符。分裂將是一個昂貴的操作

var str = "THISISJUSTATEST"; 
var array = new int[26]; 
foreach(var character in str.ToCharArray()){ 
if (character >= 'A' && character <= 'Z'){ 
    var index = character - 'A'; 
    array[index]++; 
    } 
} 
for (int i = 0; i < 26; i++) { 
    var c = i +'A'; 
    Console.WriteLine("{0} comes {1} time(s)", (char)c, array[i]); 
}