Подтвердить что ты не робот

Цитирование через символы в строке в VB.NET

Я работаю над прошлыми экзаменационными работами в рамках подготовки к экзамену Visual Basic. Мне нужна помощь в следующем вопросе, который я застрял.

Напишите функцию для вычисления количества раз, когда символы "e", "f" и "g" появляются в строке

Я попытался написать код psuedo и придумал следующее.

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) и как подсчитывать количество раз, когда в строке появляется конкретный символ?

4b9b3361

Ответ 1

Ответ в значительной степени зависит от того, что вы уже узнали в своей курсовой работе и о том, какие функции вы должны использовать.

Но, в общем, цикл над символами в строке так же просто:

Dim s As String = "test"

For Each c As Char in s
    ' Count c
Next

Что касается подсчета, просто разделите счетные переменные (eCount As Integer и т.д.) для каждого символа и увеличивайте их, если c равен этому символу - очевидно, что этот подход не масштабируется хорошо, как только вы увеличиваете количество символов для подсчета. Это можно решить, поддерживая словарь соответствующих символов, но я предполагаю, что это слишком продвинуто для вашего упражнения.

Ответ 2

Цитирование через строку прост: строка может рассматриваться как список символов, которые могут быть закодированы.

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

еще проще будет цикл for..each, но иногда лучше для я цикла

Для подсчета чисел я бы использовал словарь Вот так:

        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

Ответ 3

Если вам разрешено использовать (или вы хотите изучить) 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)