Введение 8 Этапы создания Windowsприложения 8
Скачать 6.98 Mb.
|
9.6. Выделение чисел из строкиПри анализе слов строки часто возникает необходимость определить, является ли очередное слово числом или нет. Для этого используют следующую комбинацию функций Val и Str: Str(Val(слово)). Если слово, указанное в качестве аргумента функции Val, является числом, то оно не изменится в результате такого преобразования. Но если это число окажется положительным, то перед ним функция Str обязательно добавит один пробел, который потом может быть удален функцией Strings.Trim. Все возможнее варианты преобразований приведены в таблице 13. Таблица 13
Заметим, что исходная строка совпадает с преобразованной только в трех случаях: когда Slovo равно "12", "0" и "-45". Значит, если выполняется условие Strings.Trim(Str(Val(slovo))) = slovo то анализируемое слово является числом. В качестве примера использования этого условия рассмотрим задачу вычисления суммы всех чисел, которые встречаются в произвольной строке текста. В начале программы вводится строка текста. Затем из нее удаляются лишние пробелы, и формируется массив слов. Массив называется slova(), номер последнего элемента в этом массиве хранится в переменной n. Для решения задачи нам потребуются две переменные. В переменной summa будет накапливаться сумма всех чисел, встретившихся в строке, а переменная kol нам нужна для подсчета количества этих чисел. Dim summa, kol As Integer Задаем начальные значения переменным. Так как до начала анализа массива слов нам не встретилось ни одного числа, то сумма и количество чисел задаются равными нулю. summa = 0 kol = 0 Организуем цикл для обработки массива слов. Обратите внимание, что слова в массиве нумеруются с нуля. For i = 0 To n Анализируем очередной элемент массива. If Strings.Trim(Str(Val(slova(i)))) = _ slova(i) Then Если для него выполняется рассмотренное ранее условие, значит, данное слово является числом, и его необходимо включить в общую сумму. Но перед этим слово необходимо преобразовать в число с помощью функции Val. summa += Val(slova(i)) При этом количество найденных чисел увеличивается на единицу. kol += 1 End If Next После завершения цикла надо распечатать результаты. Сначала выведем горизонтальную черту, чтобы зрительно отделить результаты работы программы от исходных данных. lstText.Items.Add("--------------------------------") Анализируем количество найденных чисел. If kol = 0 Then Если количество чисел равно нулю, значит, в строке не было ни одного числа, и вычислить их сумму невозможно. В этом случае надо вывести поясняющее сообщение. lstText.Items.Add("В строке нет чисел") Else Иначе печатаем найденную сумму чисел. lstText.Items.Add("Сумма =" + Str(summa)) End If Полный текст программы представлен в приложении 46. Пример работы программы приведен на рис. 63. Рис. 63. Пример работы программы выделения чисел из строки |