VB.NET

2012-11-06 41 views
12

'da bir dizedeki karakterlerin içinden geçme Geçmiş bir Visual Basic sınavına hazırlık olarak geçmiş sınav kağıtları üzerinde çalışmakla meşgulüm. Sıkıştığım şu soruyla ilgili yardıma ihtiyacım var. VB.NET

sayısını hesaplamak için bir işlev yordamı yazın "e", "f" ve "g" Ben psuedo kod yazmak çalıştı ve ortaya attı

bir dize görünür karakterler aşağıdaki.

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 

nasıl (a for döngü kullanarak) bir dize bireysel karakterler aracılığıyla döngü yapmak ve nasıl belirli bir karakteri bir dizede görüntülenme sayısıdır sayabilirim?

cevap

12

Bu cevap büyük ölçüde kurs çalışmanızda öğrendiğiniz şeylere ve kullanmak istediğiniz işlevlere bağlıdır.

Ama genel olarak

, bir karakter dizisindeki karakterlerin üzerinde döngü bu kadar kolaydır:

sayma gelince
Dim s As String = "test" 

For Each c As Char in s 
    ' Count c 
Next 

, sadece her karakter için ayrı sayaç değişkenlerini (eCount As Integer vs.) sahip ve ne zaman c onları artırır Bu karaktere eşittir - sayılacak karakter sayısını artırdıktan sonra bu yaklaşım iyi ölçeklenmez. Bu, ilgili karakterlerin sözlüğünü koruyarak çözülebilir, ancak bunun egzersiziniz için çok ileri olduğunu tahmin ediyorum.

+0

Thanx Konrad gerçekten katkılarınız: Sorunuzu varsayarsak

aramak istediğiniz metindir –

1

Bir dize ile döngü yapmak basittir: bir dize, döngü verilebilecek karakterlerin bir listesi olarak ele alınabilir.

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

daha da kolay bir for..each döngü olabilir, ama bazen ben döngü sayıları bu gibi bir sözlük kullanmak istiyorsunuz sayma için

iyidir olacaktır:

 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

Linq kullanmanıza izin veriyorsanız (veya öğrenmek istiyorsanız), Enumerable.GroupBy'u kullanabilirsiniz.

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)