Пример 4.9.5-1. Разработать процедуру-Function, которая подсчитывает, сколько раз заданный символ встречается в исходной строке

Программный код приведен на рис. 4.9.5-1.

Function Pr951(ByVal row As String, _ ByVal simvol As String) As Integer Dim kol, i As Integer Dim tmp As String kol = 0 For i = 0 To row.Length - 1 tmp = row.Substring(i,1) If tmp = simvol Then kol = kol + 1 End If Next Return kol End Function Private Sub Button1_Click(…) Dim r As String Dim s As Char s = CChar(InputBox("Введите символ")): r = TextBox1.Text Label2.Text = "Кол.найденных символов в строке=" & Pr951(r, s) End Sub

 

Рис. 4.9.5-1 Программный код функции Pr941()

Примера 4.9.5-1

 

Параметрами функции Pr951() являются строка row и переменная simvol. В цикле происходит выделение символа с помощью метода Substring(). Параметр row – наша исходная строка, i – параметр цикла, который будет изменяться в цикле от нуля (начало строки) до конца строки – за это отвечает метод Length. Cчетчик kol = kol + 1 обеспечивает подсчет количества заданного символа.

 

Пример 4.9.5-2. Разработать процедуру-Function, которая заменяет пробелы в исходной строке заданным символом.

Параметрами функции Pr952() являются строка row и переменная sim. В методе Replace() используем в качестве параметров исходную строку row, в качестве заменяемой подстроки используем пробел и подстроку, на которую заменяется подстрока – sim. Цель применения операции логического отрицания Not очевидна, т.к. оператор row = row.Replace(" ", sim) будет выполняться тогда, когда логическое выражение будет иметь значение True. Программный код приведен на рис. 4.9.5-2.

 

Function Pr952(ByVal row As String, ByVal simvol As Char) As String Dim zamena As Boolean If Not zamena Then row = row.Replace(" ", simvol) Else row = row.Replace(simvol, " ") End If zamena = Not zamena Return row End Function Private Sub Button1_Click(…) Dim r As String, s As Char r = TextBox1.Text s = CChar(InputBox("Введите символ")) Label2.Text = "Результирующая строка: " & Pr952(r, s) End Sub

 

Рис. 4.9.5-2. Программный код процедуры Pr952() Примера 4.9.5-2

 

Пример 4.9.5-3. Разработать процедуру-Function, которая определяет, сколько раз подстрока row_1 входит в исходную строку row.

Функция Pr953() использует метод IndexOf(), который возвращает позицию подстроки row_1 в исходной строке row, при этом счетчик будет увеличиваться на единицу при каждом нахождении подстроки. В противном случае произойдет досрочный выход из цикла с помощью оператора Exit Do.

Программный код приведен на рис. 4.9.5-3.

Function Pr953(ByVal row As String, ByVal row_1 As String) _ As Integer Dim i, kol, x As Integer i = 0 Do x = row.IndexOf(row_1, i)) If x >= 0 Then i = x + row_1.Length kol = kol + 1 Else Exit Do End If Loop Return kol End Function Private Sub Button1_Click(…) Dim r, r_1 As String r = TextBox1.Text r_1 = InputBox("Введите подстроку") Label2.Text = "Всего вхождений подстроки" & _ r_1 & "в строку " & Pr953(r, r_1) End Sub

 

Рис. 4.9.5-3. Программный код процедуры Pr953()

Примера 4.9.5-3


Пример 4.9.5-4. Разработать процедуру-Function, которая находит в заданной строке все слова, состоящие только из цифр, и записывает найденные слова в новую строку через пробел. Если таких слов нет, то результатом процедуры должна быть строка с сообщением.

Заданная произвольная строка символов, в которой группу символов, разделенную с одной или с обеих сторон одним или несколькими пробелами и не содержащую внутри себя пробелов, называют словом.

Sub Pr954(ByRef s As String) s = s.Trim 'цикл замены двух пробелов одним Do While s.IndexOf(Space(2)) >= 0 s = s.Replace(Space(2), Space(1)) Loop End Sub Function Reshenie(ByVal s As String) As String Dim Rez As String = "" Dim i, j, d, k As Integer Dim slovo As String Dim mas() As String = s.Split(CChar(Space(1))) 'разбиение строку на массив слов For i = 0 To mas.Length - 1 slovo = mas(i) k = 0 'количество цифр в слове d = slovo.Length 'длина слова For j = 0 To d - 1 'цикл по одному слову If slovo.Substring(j, 1) >= "0" And _ slovo.Substring(j, 1) <= "9" Then k = k + 1 End If Next If k = d Then Rez = Rez + slovo + Space(1) End If Next If Rez = "" Then Rez = "Таких слов нет" End If Return Rez End Function Рис. 4.9.5-4. Программный код процедур Pr954()и Reshenie() Пример 4.9.4-4

Решение задачи реализует процедура-функция Reshenie(). В ней после вызова процедуры Pr954() создается строковый массив слов mas() с помощью метода Split(), которая разбивает строку на массив по признаку одного пробела.

Далее в цикле по всем элементам массива рассматривается каждое слово и во внутреннем цикле каждый символ рассматриваемого слова с помощью метода Substring() сравнивается с символами-цифрами и подсчитывается количество цифр в слове. Если это количество цифр в слове равно длине слова, значит рассматриваемое слово состоит только из цифр, и, следовательно, оно добавляется в новую результатирующую строку Rez. Если после выполнения внешнего цикла результирующая строка Rez пуста (т.е. не содержит слов), то в нее записывается сообщение "Таких слов нет".

 

 


Тестовые задания

 

Символьным (строковым) выражением является

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

последовательность букв русского или латинского алфавита

последовательность букв русского алфавита

последовательность букв русского или латинского алфавита, цифр или других символов, начинающаяся с латинской буквы и взятая в кавычки

Ошибочной записью символьной переменной является

с$

b

c1

нет верного ответа

Подсчитать количество символов в символьном выражении позволяет функция

Len()

Left()

Asc()

Mid ()

Операции, допустимые для строковых данных

>, <, =, < =, > =, <>, +, &

+, =, &

=

нет верного ответа

Метод a.Substring(0, n)

возвращает n первых символов строки a

возвращает n последних символов строки a

не применяется к строкам

находит символ, стоящий на позиции n в строке a

ничего не делает

Метод a.Substring(n, m)

вырезает из строки a, начиная с n-ого, m символов

вырезает из строки a, начиная с m-ого, n cимволов,

не применяется к строкам

нет верного ответа

Функция Space(n)

возвращает строку из n пробелов

возвращает строку из n первых символов

возвращает строку из n последних символов

удаляет n начальных пробелов


Метод a.ToUpper

заменяет строчные буквы строки a на прописные

заменяет прописные буквы на строчные

удаляет начальные пробелы строки

удаляет конечные пробелы строки

Метод a.ToLower

заменяет прописные буквы строки aна строчные

заменяет строчные буквы на прописные

удаляет начальные пробелы строкиa

удаляет конечные пробелы строки a

Метод a.TrimStart

удаляет начальные пробелы строки a

заменяет прописные буквы строки a на строчные

заменяет строчные буквы строки a на прописные

удаляет конечные пробелы строки

нет верного ответа

Метод a.TrimEnd

удаляет конечные пробелы строки

заменяет прописные буквы на строчные

заменяет строчные буквы на прописные

удаляет начальные пробелы строки

нет верного ответа

Метод a.Indexof(b, n)

начиная с n-й позиции строки a, определяет позицию вхождения в нее строки b

начиная с n-й позиции строки b, определяет позицию вхождения в нее строки a

заменяет n символов строки a на n символов строки b

Функция Chr(n)

возвращает символ, код ASCII которого равен числу n

возвращает строку из n пробелов

возвращает строку из n первых символов

возвращает строку из n последних символов

Функция Asc(a)

возвращает ASCII код первого символа строки a

возвращает количество символов в строке a

преобразует число в строку a

не применяется к строкам

Функция Val(a)

преобразует строку a в число, если это возможно

возвращает длину строки

определяет ASCII код строки

не применяется к строкам

Определить результат выполнения фрагмента программы

Dim a As String = "стереопроигрыватель" TextBox1.Text = a.Substring(0, 6)

стерео

O

нет верного ответа

проигрыватель

В результате выполнения фрагмента программы

A ="КОЗАК" a.Replace("О","А") TextBox1.Text= a

вторая буква будет заменена на букву «А»

будет вырезана буква «А»

будет вырезана вторая буква слова

Функция Ucase (a)…

заменяет строчные буквы на прописные cтроки а

заменяет прописные буквы на строчные

удаляет начальные пробелы строки

удаляет конечные пробелы строки

Функция Ltrim (A)…

удаляет начальные пробелы строки A

заменяет прописные буквы на строчные

заменяет строчные буквы на прописные

удаляет конечные пробелы строки

нет верного ответа

Функция Rtrim (a)…

удаляет конечные пробелы строки а

заменяет прописные буквы на строчные

заменяет строчные буквы на прописные

удаляет начальные пробелы строки


 

4.9.7. Лабораторная работа по теме
«Программирование алгоритмов обработки
символьных и строковых данных»

 

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

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: