Visual Basic .NET для чайников - У. Вонг. Visual Basic .NET для чайников - У. Диалектикамосква СанктПетербург Киев
Скачать 7.1 Mb.
|
Глава 18. Обработка текстовой информации 197 Команда Trim удаляет лишние пробелы в начале и в конце строки, а затем, следующим кодом, к значению переменной добавляется один пробел и слово "Кинг", в результате чего мы получаем строку "Мартин Лютер Кинг". У нас имеется возможность удалить либо вернуть часть символов, расположенных в нача- ле, в конце или посередине строки. Для этого следует воспользоваться коман- дой Right или Mid. Возвращение первых символов строки Иногда так бывает, что строки содержат больше информации, чем это необходимо. На- пример, переменная ПолноеИмя может содержать в себе имя и фамилию человека, тогда как вам нужно, скажем, только имя. Чтобы вернуть лишь некоторое количество символов из на- чала строки, воспользуйтесь следующей командой BASIC: N) Вас, наверное, удивляет наличие слов перед коман- дой Таким образом дается ссылка на отдельный файл классов, содержащий коды BASIC, которые делают рабочей команду Более подробную информа- о файлах классов и объектно-ориентированном программировании вы найдете в седьмой части этой книги. Приведенная выше команда обращается к компьютеру: "Видишь переменную ПолноеИ- мя? Верни первые N символов из этой сказанное на примере. Dim ПолноеИмя, Имя As ПолноеИмя "Рита Н. Брокович" Имя = 4) Переменной Имя будет присвоено значение Р и т а . Возвращение последних символов строки Чтобы получить определенное количество символов начиная с правого края строки, вос- пользуйтесь такой командой BASIC: N) Эта команда дает компьютеру указание: переменную ПолноеИмя? Верни по- следние N символов этой строки". Приведем пример: Dim ПолноеИмя, Фамилия As S t r i n g ПолноеИмя "Рита Н. Брокович" Фамилия == 8) В результате переменной Фамилия будет присвоено значение Б р о к о в и ч . Возвращение символов, находящихся внутри строки Если нужный текст расположен где-то внутри строки, для его возвращения вос- пользоваться командой: Часть IV. Основы создания кодов X, Y) Данная команда говорит компьютеру: "Видишь переменную ПолноеИмя? Отсчитай X символов от левого края строки и начиная с этой позиции верни следующие Y символов". Рассмотрим это на примере: Dim ПолноеИмя, Инициал As S t r i n g = Врокович" Инициал = 6, 2) Переменной Инициал будет присвоено значение (включая точку). и замена слов При необходимости найти имя, номер или какое-нибудь слово внутри одной большой строки, воспользуйтесь командами BASIC для поиска текстовой информации. В Visual Basic имеется две такие команды: I n S t r и I n t S t r R e v . Поиск одной строки внутри другой Если одна строка расположена где-то внутри другой строки (т.е. является ее частью), най- ти ее позицию можно с помощью команды BASIC I n S t r : "ИскомаяСтрока") Указанная команда возвращает номер позиции внутри исходной строки, начиная с кото- рого следуют символы искомой строки. Например: Dim ПолноеИмя As S t r i n g Dim Позиция As I n t e g e r = "Иван Федорович Крузенштерн" = "Федорович") В данном случае переменной Позиция будет присвоено значение 6. Если строка, которую вы ищете, в исходной строке не будет найдена, команда I n S t r вернет значение 0. Для Visual Basic символы верхнего и нижнего регистров воспринимаются как со- вершенно разные. Поэтому при поиске вхождения одной строки в другую обращайте внимание на регистр. Например, следующая команда возвращает нулевое значение: Федорович "ФЕДОРОВИЧ") Строка Федорович вовсе не соответствует строке ФЕДОРОВИЧ, и, возвращая ну- левое значение, Visual Basic как бы говорит: "Извини дружище, но такого текста в исходной строке нет". Поиск текста по шаблону Поиск текста по шаблону подразумевает, что Visual Basic может сравнивать тексто- вые значения с заранее заданным образцом и соответствуют ли они ему. Для вы- полнения данной операции используется оператор Like: Dim Flag As Boolean Dim Строка As S t r i n g Глава 18. Обработка текстовой информации Строка = Flag = Строка Like "мышь" 1. Первая строка говорит Visual Basic о необходимости создать перемен- ную типа Boolean и назвать ее именем Flag. 2. Вторая строка дает указание Visual Basic создать переменную типа S t r i n g и назвать ее Строка. 3. В третьей строке переменной Строка присваивается значение мышь. 4. Четвертая строка приказывает Visual Basic "Сравни значение перемен- ной Строка со значением мышь, а результат сравнения присвой переменной Flag". Поскольку в данном случае значение переменной Строка и значение мышь совпадают, переменной Flag будет присвоено значение True. Применение группового символа В предыдущем примере в качестве шаблона была использована строка мышь. Можно не- много усложнить задачу и расширить круг поиска за счет замены одного из символов знаком вопроса (?). Знак вопроса в шаблоне означает, что вместо него в этой позиции может стоять любой другой символ. Например: Flag = Строка Like "мыш?" переменная Flag будет принимать значение True каждый когда значением переменной Строка будет текст, состоящий из четырех символов, первыми тремя из кото- рых будут мыш. Такому шаблону, в частности, будут удовлетворять строки мыши, и т.д. Для Visual Basic имеет принципиальное значение, в каком набран текст. Вот почему буква — это не одно и то же, что и буква Следователь- но, сравнение указанного выше шаблона со строкой Мышь будет возвращать пере- менной Flag значение F a l s e . Переменной Flag будет также присваиваться значение F a l s e и в том случае, если с шаблоном будет сравниваться строка, состоящая из менее чем четырех или более чем четы- рех символов, вне зависимости от того, будут ли в ней присутствовать буквы мыш. Знаком вопроса можно также заменить два и более символов: Flag = Строка Like Теперь переменной Flag значение True будет присваиваться каждый раз, когда с шабло- ном будет сравниваться строка, состоящая из четырех символов и начинающаяся с буквы Групповой символ "звездочка" Групповой символ "вопросительный может заменять собой только один текстовый символ. Но если нужно обозначить произвольное количество любых символов, применяется групповой символ "звездочка" (*): •-- Строка Like В данном случае переменной Flag будет присваиваться значение True каждый раз, когда с шаблоном будет сравниваться строка, начинающаяся с буквы заканчивающаяся мягким знаком и состоящая из любого количества символов, в том числе и строки мышь, моль, ма- гистраль, и др. При необходимости несколько групповых символов можно комбинировать для составле- ния более гибких шаблонов, например: = Строка Like 200 Часть IV. Основы создания кодов Этому шаблону удовлетворяют строки произвольной длины, первой буквой которых яв- ляется а третьей — буква мышка, мушкет, 7. Применение группового символа Вопросительный знак и могут заменять собой любую букву, цифру или знак. В от- личие г них групповой символ заменяет собой только цифры (от 0 до 9). Например: F l a g Строка L i k e " м # " В этом случае переменной F l a g будет присваиваться значение T r u e каждый раз, когда с шаблоном будет сравниваться строка, начинающаяся с буквы и заканчивающаяся любой мЗ, м9 и т.д. Применение диапазонов В Visual Basic для обозначения символов, принадлежащих определенному ряду, ис- пользуются диапазоны. Например, чтобы обозначить все буквы от А до Z, наберите следую- щий код: F l a g Строка L i k e "[A — В этом случае переменной F l a g будет присваиваться значение T r u e каждый раз. когда с шаблоном будет сравниваться строка, состоящая из одной прописной буквы латинского ал- фавита: А, В, ..., Z. Диапазоны можно использовать в комбинации с любыми групповыми символами: F l a g С т р о к а L i k e - В этом случае переменной F l a g будет присваиваться значение T r u e каждый раз, когда с шаблоном будет сравниваться строка, начинающаяся на букву F, за которой следует буква из диапазона [К — Z ] , две цифры, точка и далее произвольное количество любых символов, например: . 6, FZ12 . . s n a p и т.п. Диапазон заменяет собой только один символ. В диапазоне также может быть представлен ряд символов, которые не должны встречаться в строке определенной позиции: [! а - z ]. Такой код говорит Visual Basic "В этой по- зиции может быть любой символ, кроме строчных букв латинского алфавита". Например: F l a g ---- Строка L i k e " F M [ ! a - В этом случае переменной F l a g будет присваиваться значение T r u e каждый раз, когда с шаблоном будет сравниваться строка, начинающаяся с букв за которыми следует любой кроме строчной буквы латинского алфавита, далее 1 и произвольное количество лю- бых других символов: 105 . Ь, 3 и т.п. Замена части строки другой строкой Если у вас возникло желание создать с помощью Visual Basic собственный тексто- вый процессор (с возможностями поиска и замены рекомендуем воспользоваться та- кой командой: Позиция) = Эта команда дает указание компьютеру: исходной строке найди символ, расположен- ный в заданной позиции (считая начала строки) и начиная с данного места замени после- дующие символы текстом новой строки". Глава Обработка текстовой информации 201 Операция замены части строки другой строкой требует определенной сноровки и акку- ратности. Обратимся к примеру: = "Иван Иванович Сусанин" 6) "Степанович" Вот как Visual Basic интерпретирует этот код. 1. В первой строке дается указание присвоить переменной значение Иван Иванович Сусанин. 2. Вторая строка говорит Visual Basic "В строке, представленной пере- менной ПолноеИмя, найди шестой от начала строки символ и начиная с него замени последующие символы строкой Степанович". Вот что в результате этого выйдет: Иван Иванович Сусанин строка) Иван (шестой символ от начала строки) (новая строка) Получив указание заменить часть строки другой строкой, Visual Basic поймет все буквально и без разбора сотрет все исходные символы, оказавшиеся в пределах новой строки. Тест на проверку полученных вами знаний 1. Как понять программе, что вводимая информация должна быть воспринята как строка? а. Нужно в конце строки поставить тире и указать автора. набрать текст без грамматических ошибок, то он будет воспринят как строка. в. Нужно создать отдельный файл и указать в нем перечень всех строк, которые мо- гут быть потом набраны. Текстовая информация должна быть за- ключена в кавычки. 2. Что делает следующий код BASIC: Поиск = а. Код заменяет исходную строку искомой, и, ищет, чего бы еще заменить в тепле програм- мы. б. сравнивает исходную строку с искомой, и если он находит десять различий, компью- тер издает звуковой сигнал. в. Если искомая строка является частью исход- ной, переменной к присваивается число, обозначающее позицию символа исходной строке, начиная с которого далее следует текст искомой строки, г. Выполняет все вышеперечисленные действия. и чисел Может возникнуть необходимость преобразовать строки в числовые значения, с тем что- бы иметь возможность использовать их для проведения вычислений. С другой стороны, пре- образование чисел в строки позволяет обрабатывать их как текстовую информацию. При не- обходимости можно также преобразовать строки в коды ASCII или ANSI. 202 Часть Основы создания кодов Преобразование строк в числа Можно ли использовать текстовое поле для получения от пользователей информации об их среднем заработке? К сожалению, текстовые поля сохраняют получаемые данные как зна- чения свойства Text, которые изначально имеют тип S t r i n g (т.е. значениями будут строки, а не числа). Чтобы преобразовать текст в число, нужно воспользоваться одной из функций преобразования, например такой: или такой: Список функций преобразования строк в числа не ограничивается функциями и CInt. Есть другие функции, которые преобразовывают строки в значения различных числовых типов. Например, функция преобразовывает текст в чи- словое значение типа S i n g l e . Выбор функции зависит от типа данных, к которо- му нужно преобразовать текстовое значение. Первая команда говорит компьютеру: "Преобразуй текстовое значение переменной Строка в числовое значение типа Double". Вторая команда требует иного: " Преобразуй текстовое значение переменной Строка в числовое значение типа I n t e g e r " . Проиллюстрируем сказанное таким примером: Dim ЧисловоеЗначение As Double ЧисловоеЗначение = Вот как Visual Basic интерпретирует данный код. Первая строка требует: "Создай переменную типа Double и присвой ей имя ЧисловоеЗначение". 2. Вторая строка приказывает: "Возьми данные, сохраненные как значение свойст- ва Text объекта, именуемого преобразуй их в числовое значение ти- па а затем присвой это значение переменной Таким образом, если пользователь наберет в текстовом поле число 1000 (оно автоматически будет воспринято как строка), переменной ЧисловоеЗначение будет при- своено значение 00. Если пользователь наберет что-то вроде "Мой доход составляет или "1000 долларов", Visual Basic выдаст сообщение об ошибке, поскольку он не будет знать, как преобразовать слова в числа. Преобразование чисел в строки Допустим, у вас возникло желание (или необходимость) преобразовать числа в строки, с тем чтобы иметь возможность обрабатывать значения как текстовую информацию. Для этого вы должны воспользоваться следующей командой BASIC: CStr (Число) Такая команда дает указание компьютеру: "Возьми сохраненное как значение пе- ременной Число, и преобразуй его в строку". Для Visual Basic числа и строки —- это совершенно разные понятия, например: 10 Это число "10" ' Это строка Глава 18. Обработка текстовой информации 203 Вот примеры преобразования чисел в строки: Это с т р о к а " 1 0 " ' Это с т р о к а " 1 0 . 5 " C S t r ( - 10) ' Это с т р о к а " - 1 0 " Когда Visual Basic преобразовывает число в строку, в начало строки добавля- ется пробел, если число положительное; если число отрицательное, строка начина- ется со знака "минус". Функция преобразования C S t r становиться просто незаменимой, если на экране нужно отобразить число, используя для этой цели свойство Text текстового поля или надписи. Преобразование строк в коды ASCII Если вы серьезно занимаетесь программированием, вам наверняка иметь дело с кодами ASCII, поэтому рекомендуем приобрести копию таблицы с таковыми и повесить ее в где-нибудь рядом с компьютером. Коды это числа, используемые компьютером для представления всех основных символов (поскольку компьютер в конечном итоге имеет дело только с числами). букве " Л " (латинский алфавит) соответствует код ASCII, равный числу 65, а букве "а" (также латинский алфавит) — код ASCII, равный числу 97. Если нужно узнать код ASCII, соответствующий определенной букве, необходимо вос- пользоваться следующей командой BASIC: Например: X Asc X = 65 X = Asc ( " а " ) X = 97 Преобразование кодов ANSI в строки Microsoft Windows не использует коды вместо них применяются коды ANSI. Впрочем, они практически полностью идентичны. Чтобы применить коды ANSI на практике, воспользуйтесь такой командой BASIC: Dim X As S t r i n g X = Коды ANSI применяются в основном для набора специальных управляющих символов, обеспечивающих, в частности, переход на новую строку и возврат каретки. Приведенные ниже команды демонстрируют применение некоторых кодов ANSI. = = C h r ( 1 2 ) = Используя такие команды для управления строками, вы всегда будете что текст на экране отображается именно так, как вы хотите, что, конечно же, повышает качество соз- даваемой вами программы. 204 Часть IV. Основы создания кодов Глава 19 Определение констант и использование комментариев Созлание констант Область видимости констант Виды комментариев и способы их использования это постоянное значение, т.е. такое, которое никогда не меняется в процессе выполнения программы. Константами могут быть строки, числа и даты. Чем полезны константы? Существует несколько причин, побуждающих использовать их вне зависимости от конечных целей, ради которых создается программа. Предположим, нам нужно написать программу, определяющую размеры начисляемой за- работной платы исходя некоторой фиксированной ставки. Если эта ставка равна, скажем, $50. вам нужно будет набрать число 50 во всех формулах программы, где используется зна- чение ставки. Однако число 50 само по себе не значит. Более того, если вдруг размер фиксиро- ванной ставки поменяется и будет равен уже не $50, а, например, $55, вам придется во всем тексте программы менять число 50 на 55. Если вы случайно пропустите хотя бы одно вхож- числа 50 и не замените числом 55, вся программа будет работать некорректно. не иметь проблем, подобных описанной, нужно использовать константы. Констан- та -- просто слово, заменяющее собой некоторое значение. Она не только может объяс- нять посредством своего имени смысл представляемого значения, но и позволяет легко и бы- стро заменить это значение во всем тексте программы. Наименование Имена констант должны удовлетворять нескольким критериям, в том числе: начинаться с буквы; состоять не более чем из 40 символов; включать только буквы, цифры и символы подчеркивания ( _ ); использование зна- ков пунктуации и пробелов не допускается; не совпадать с зарезервированными в Visual Basic ключевыми словами. Чтобы в тексте программы названия констант было легко отличить от названий пе- ременных, присваивайте константам имена, состоящие из прописных букв, например: Чтобы по имени константы можно было определить, к какому типу данных отно- сится ее начинайте имена с трехбуквенных префиксов, указывающих на тип данных: и т.д. |