2012-11-06 14 views
12

Ich arbeite an früheren Prüfungsarbeiten in Vorbereitung auf eine Visual Basic-Prüfung. Ich brauche Hilfe bei der folgenden Frage, bei der ich feststecke.Durchstreichen von Zeichen in einer Zeichenfolge in VB.NET

eine Funktion Prozedur schreiben die Anzahl der Male die Zeichen „e“, „f“ und „g“ erscheint in einem String

Ich versuchte, den Pseudo-Code zu schreiben und kam zu berechnen oben mit folgende.

Loop through each individual character in the string 
If the character = "e","f" or "g" add 1 to number of characters 
Exit loop 
Display total in messagebox 

Wie kann ich Schleife durch einzelne Zeichen in einer Zeichenkette (mit einem for Loop) und wie ich zähle die Anzahl der Male ein bestimmtes Zeichen in einer Zeichenfolge angezeigt wird?

Antwort

12

Die Antwort hängt stark davon ab, was Sie bereits in Ihrer Kursarbeit gelernt haben und welche Funktionen Sie verwenden sollen.

Aber im Allgemeinen in einer Schnur über die Charaktere Looping ist so einfach wie diese:

Dim s As String = "test" 

For Each c As Char in s 
    ' Count c 
Next 

Wie zum Zählen, haben einfach getrennte Zählervariablen (eCount As Integer etc.) für jedes Zeichen und sie erhöht werden, wenn c entspricht diesem Zeichen - offensichtlich skaliert dieser Ansatz nicht gut, wenn Sie die Anzahl der zu zählenden Zeichen erhöhen. Dies kann durch ein Wörterbuch der relevanten Charaktere gelöst werden, aber ich vermute, dass dies für Ihre Übung zu weit fortgeschritten ist.

+0

Thanx Konrad wirklich zu schätzen Sie Ihre Eingabe –

1

Das Durchlaufen eines Strings ist einfach: Ein String kann als eine Liste von Zeichen behandelt werden, die geloopt werden können.

Dim TestString = "ABCDEFGH" 
for i = 0 to TestString.length-1 
debug.print(teststring(i)) 
next 

noch einfacher wäre eine for..each Schleife sein, aber manchmal ein für i-Schleife ist besser

Für die Zahlen zählen würde ich ein Wörterbuch wie folgt verwenden:

 Dim dict As New Dictionary(Of Char, Integer) 
     dict.Add("e"c, 0) 
Beware: a dictionary can only hold ONE item of the key - that means, adding another "e" would cause an error. 
each time you encounter the char you want, call something like this: 
     dict.Item("e"c) += 1 
0

Wenn Sie Linq verwenden können (oder möchten), können Sie Enumerable.GroupBy verwenden.

Ihre Frage Unter der Annahme, ist der Text, den Sie suchen möchten:

Dim text = "H*ow do i loop through individual characters in a string (using a for loop) and how do I count the number of times a specific character appears in a string?*" 
Dim charGroups = From chr In text Group By chr Into Group 

Dim eCount As Int32 = charGroups.Where(Function(g) g.chr = "e"c).Sum(Function(g) g.Group.Count) 
Dim fCount As Int32 = charGroups.Where(Function(g) g.chr = "f"c).Sum(Function(g) g.Group.Count) 
Dim gCount As Int32 = charGroups.Where(Function(g) g.chr = "g"c).Sum(Function(g) g.Group.Count) 
Verwandte Themen