Базовые алгоритмы обработки строк и прмеры их програмирования

Функции и методы для работы со строками познакомили вас с возможностями обработки строк и символов в VisualBasic. При решении задач следует научиться находить необходимые функции и методы, понимая их предназначение, а также использовать в совокупности простые приемы обработки строк (назовем их базовыми алгоритмами), среди которых можно выделить следующие:

  • • Определение количества символов (Пример 9.5-1).
  • • Замена символов в строке (Пример 9.5-2).
  • • Удаление символа в строке (Пример 9.5-3).
  • • Вставка символа в строку.
  • • Анализ символа на принадлежность к группе (Пример 9.5-4).
  • • Подсчет количества фрагментов (Пример 9.5-5).

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

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

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

Программный код функции Рг941()

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

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

подсчет количества заданного символа.

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

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

Программный код процедуры Рг952( )

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

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

В функции Рг953( ) используется метод Substring( ), который анализирует строку с целью нахождения в ней указанного символа. Результатом выполнения первой части (до конкатенации) row = row.Substring(l, i - 1)+ now.Substning(i + 1, Clnt(x)) для слова, например, мама, в котором требуется удалить символ а станет возвращенный символ М, а вторая часть возратит ма. Результатом объединения станет мма. Очевидно, что при следующем проходе останется два символа мм, которые и будут результатом.

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

Пример 9.5-4. Разработать процедуру-Function, которая определяет, сколько в исходной строке символов Simvol l и Simvol_2. Под группой понимается принадлежность символа к гласным или согласным буквам русского или латинского алфавита, цифрам, строчным или прописным буквам.

Параметрами функции Рг954 являются строка row и переменные simvol_l и simvol_2. В функции Рг954( ) используем функцию

Substring( ), которая выделит символ и поместит его в ячейку tmp.

Программный код процедуры Рг953()

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

Программный код процедуры Рг954()

Рис. 9.5-4. Программный код процедуры Рг954()

Затем содержимое ячейки сравнивается со введенными пользователем символами, и если условие истинно, то счетчик увеличивается на единицу. Программный код приведен на рис. 9.3-4.

Пример 9.5-5. Разработать процедуру-Function, которая определяет, сколько раз подстрока Row l входит в исходную строку.

Пользовательская функция Рг955() использует метод IndexOf( ), который возвращает позицию подстроки Row_l в исходной строке Row, при этом счетчик будет увеличиваться на единицу при каждом нахождении подстроки. В противном случае произойдет досрочный выход из цикла с помощью оператора Exit Do.

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

Программный код процедуры Рг952( )

Рис. 9.5-5. Программный код процедуры Рг952( )

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

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

Для решения задачи необходимо из заданной строки выделять каждое слово. Так как слова в строке разделены одним или несколькими пробелами, то сначала удобно удалить из строки лишние пробелы и оставить только по одному пробелу между словами. Это реализует процедура Рг956( ),

которая сначала с помощью метода Trim( ) удаляет начальные и конечные пробелы в строке, а затем в итеративном цикле заменяет каждую подстроку из двух пробелов на один пробел до тех пор, пока в этой строке имеется хотя бы одна подстрока из двух пробелов.

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

Программный код процедур Рг956() и Reshenie()

Рис. 9.5-6. Программный код процедур Рг956() и Reshenie()

Решение задачи реализует процедура-функция Reshenie( ). В ней после вызова процедуры Рг956( ) создается строковый массив слов

mas( ) с помощью метода Split( ), которая разбивает строку на массив по признаку одного пробела.

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

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >