我正在忙着处理过去的考试试卷以准备Visual Basic考试。我需要帮助解决以下问题。
编写一个函数程序来计算字符串“e”,“f”和“g”出现在字符串中的次数
我尝试编写伪代码并提出以下内容。
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
如何循环字符串中的单个字符(使用for
循环)以及如何计算特定字符在字符串中出现的次数?
答案 0 :(得分:15)
答案很大程度上取决于你在课程中学到的知识以及你应该使用的功能。
但一般来说,循环字符串中的字符就像这样容易:
Dim s As String = "test"
For Each c As Char in s
' Count c
Next
至于计数,只需为每个字符设置单独的计数器变量(eCount As Integer
等),并在c
等于该字符时递增它们 - 显然,一旦增加数字,该方法就不能很好地扩展要计算的字符数。这可以通过维护相关字符的字典来解决,但我猜这对于你的练习来说太先进了。
答案 1 :(得分:2)
循环一个字符串很简单:一个字符串可以被视为一个字符列表,可以循环播放。
Dim TestString = "ABCDEFGH"
for i = 0 to TestString.length-1
debug.print(teststring(i))
next
更容易是for..each循环,但有时候for i循环更好
为了计算数字,我会使用字典 像这样:
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
答案 2 :(得分:0)
如果您允许使用(或想要学习)Linq,则可以使用Enumerable.GroupBy
。
假设您的问题是您要搜索的文字:
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)