2016-10-11 1 views
0

Ich möchte überprüfen, wie oft k erscheint. Das ist was ich bisher gemacht habe und bekomme keine Ergebnisse.Wie kann ich das Gesamtvorkommen von Buchstaben K erhalten?

class Program 
{ 
    static void Main(string[] args) 
    { 
     int count = 0; 
     string str = "hnfdjkkedjjykukyukrtrnrkkkkt"; 
     string l; 

     for (int i = 0; i < str.Length; i++) 
     { 
      l = str.Substring(1, 1); 
      if (l == "k") 
      { 
       count++; 
      } 
     } 
     Console.WriteLine("k appears " + count++ + " times"); 
     Console.ReadKey(); 
    } 
} 
+2

ändern 'l = str.Substring (i, 1) sein,' und es soll –

+0

arbeitet das funktioniert gut –

Antwort

3

können Sie versuchen:

int count = str.Count(c => c=='k') 

Hope Diese Hilfe :-)

+0

Hinweis: diesen Code verwenden Sie muss 'System.Linq' Namespace enthalten –

+0

In der Tat danke für die Zugabe :-) – Arcord

2

können Sie gehen so einfach wie

using System; 
using System.Linq; 

public class Program 
{ 
    public static void Main() 
    { 
     string s = "aasfkkfasfas"; 
     int count = s.Count(l => l== 'k'); 

     Console.WriteLine(count); 
    } 
} 

Aufruf Substring für jeden Buchstaben ist wirklich nicht die beste Lösung. Beachten Sie, dass die Zeichenfolge IEnumerable implementiert, sodass Sie dies auch folgendermaßen tun können:

using System; 

public class Program 
{ 
    public static void Main() 
    { 
     string s = "aasfkkfasfas"; 
     int count = 0; 
     foreach(char c in s) 
     { 
      if(c == 'k') 
       count++; 
     } 

     Console.WriteLine(count); 
    } 
} 

Dies ist näher an Ihrer ursprünglichen Lösung.

0

Sie können auch RegEx (Reguläre Ausdrücke) dafür verwenden, aber es ist eine Art Overkill für Ihren Anwendungsfall.

Es ist im Namensraum System.Text.RegularExpressions gefunden (siehe MSDN).

Regex.Matches(text, pattern).Count 

In Ihrem Fall wäre es

Regex.Matches("hnfdjkkedjjykukyukrtrnrkkkkt", "[k]").Count 
Verwandte Themen