Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Функции, предназначенные для работы со строкамиСодержание книги
Поиск на нашем сайте
Решение подавляющего большинства задач на обработку строковых переменных требует владения встроенными функциями:
Строку символов всегда можно преобразовать в одномерный массив отдельных символов, расщепив ее при помощи функции Mid или Split. После этого со строкой можно работать точно так же как и с одномерным массивом. После обработки массива, его элементы следует обратно слить в строку при помощи операции сцепления. Функция Split Функция Split используется для расщепления строки на подстроки с использованием разделителя подстрок. Возвращает эта функция одномерный массив с типом данных Variant (String), содержащий в качестве элементов найденные подстроки. Формат обращения к функции:
Здесь Исходная строка – строка, которую нужно расщепить (обязательный аргумент). Если аргумент содержит нулевую строку (””), то возвращается пустой массив. Разделитель– символы типа String, которые используются в качестве разделителя строки (необязательный аргумент). Чаще всего в качестве разделителя используются символы пробел или запятая. Если аргумент опущен, то по умолчанию используется символ пробела (””). Если аргумент содержит нулевую строку (””), то возвращается одноэлементный массив, содержащий исходную строку. Функция Join Функция Join выполняет обратное действие – объединяет элементы массива в строку, используя указанный разделитель. Формат обращения к функции:
Оператор Mid Оператор Mid используется для модификации строк. Формат обращения к оператору:
Здесь Исходная строка – строка для модификации, Позиция – позиция символа в исходной строке, с которой начинается замена, Длина – число заменяемых символов, Замена – строковое выражение для замены. Число заменяемых символов всегда меньше или равно числу символов в исходной строке. Не следует путать этот оператор с одноименной функцией!
Типовые задачи на обработку строк Анализ символьных строк Пример 1. Ввести строку символов. Определить: - количество цифр в строке; - есть ли в строке одинаковые символы; - вывести все гласные буквы латинского алфавита. Фрагмент программного кода: Option Explicit Private Sub Command1_Click() Dim S As String, S1 As String, a As String Dim i As Integer, kol As Integer, n As Integer Dim T As Boolean 'Логическая переменная S = Text1.Text 'Ввод строки Text2.Text = "": Text3.Text = "": Text4.Text = "" n = Len(S) 'Длина строки
'Определение количества цифр в строке kol = 0 'Инициализация счетчика для подсчета количества цифр For i = 1 To n 'Цикл по всем символам строки для поиска цифр a = Mid(S, i, 1) If (a >= "0") And (a <= "9") Then kol = kol + 1 Next i Text2.Text = Str(kol) 'Вывод количества цифр в строке
'Определяется, есть ли в строке одинаковые символы T = False 'Предполагается, что одинаковых символов нет For i = 1 To n 'Цикл для поиска одинаковых символов 'Если i-ый символ исходной строки встречается в строке еще раз, то функция IntStr 'вернет значение не равное нулю If (InStr(1, S, Mid(S, i, 1)) <> 0) And _ (InStr(1, S, Mid(S, i, 1)) <> i) Then T = True 'i-ый символ в подстроке есть Exit For 'Немедленный выход из цикла, если найден хотя бы 'один одинаковый символ End If Next i If T Then Text3.Text = "Одинаковые символы есть" Else Text3.Text = "Одинаковых символов нет" End If 'Вывод гласных латинских букв For i = 1 To n 'Цикл для поиска гласных латинских букв a = Mid(S, i, 1) Select Case a Case "A", "E", "I", "O", "U", "Y" Text4.Text = Text4.Text + a + " " Case "a", "e", "i", "o", "u", "y" Text4.Text = Text4.Text + a + " " End Select Next i If Text4.Text = "" Then Text4.Text = "Таких букв нет" End Sub Пример 2. Дан текст. Определить количество предложений и найти количество слов, начинающихся с буквы «п». Фрагмент программного кода: S = Text1.Text n = Len(S) 'Подсчет количества предложений kp=0 For i = 1 To n a = Mid(S, i, 1) 'Выделение i-го символа If (a=".") Or (a="?") Or (a="!") Then kp=kp+1 Next i 'Подсчет количества слов, начинающихся с буквы «п» или «П» If (Mid(S, 1, 1)="П") Then ks=1 Else ks=0'Проверка первого слова For i=1 To n If (Mid(S,i,2)=" П") Or (Mid(S,i,2)=" п") Then ks=ks+1 Next i
Изменение строк (замена, удаление, вставка символов) Пример 3. Получить новую строку S1 из введенной строки S, заменив строчные русские буквы на прописные. Фрагмент программного кода: For i = 1 To Len(S) 'Цикл по всем символам заданной строки a = Mid(S, i, 1) Select Case a 'Преобразование встреченной в заданной строке строчной русской буквы 'в прописную русскую букву и добавление ее в новую строку. Прописная русская буква 'в таблице ASCII имеет код меньший, чем соответствующая ей строчная, на 32. Case "а" To "я" S1 = S1 + Chr(Asc(a) - 32) Case Else S1 = S1 + a 'Добавление символа строки s в строку s1 без преобразования End Select Next i
Пример 4. Получить новую строку S1 из введенной строки S такую, чтобы между словами был только один пробел. Вывести сообщение о количестве удаленных пробелов. Фрагмент кода программы: Private Sub Command1_Click() S = Text1.Text S = Trim(S) 'Удаление пробелов вначале и в конце заданной строки S1 = "" For i = 1 To Len(S) - 1 'Цикл для поиска пробелов If Mid(S, i, 1) <> " " Then S1 = S1 + Mid(S, i, 1) 'Переписывание символов, отличных от проделов в строку s1 Else 'Запись в строку s1 одного пробела, если следующий за ним символ не пробел If Mid(S, i + 1, 1) <> " " Then S1 = S1 + " " End If Next i S1 = S1 + Mid(S, Len(S), 1) 'Переписывание последнего символа
k = Len(S) - Len(S1) 'Подсчет количества удаленных пробелов Text2.Text = S1 Text3.Text = Str(k) End Sub
Пример 5. В заданной строке S заменить все слова «всегда» на «часто». Фрагмент кода программы: Private Sub Command1_Click() s=Text1.Text s=Replace(s, "Всегда", "Часто", 1) s=Replace(s, "всегда", "часто", 1) Text2.Text=s End Sub Пример 6. Преобразовать заданную строку S в массив слов и вывести его в поле Text. Фрагмент кода программы: Private Sub Command1_Click() Dim i, k As Byte Dim s As String Dim m(1 To 127) As String 'Описание массива для хранения слов s – заданная строка s = Text1.Text Text2.Text = "" k = 1 'Задание начального номера элемента массива For i = 1 To Len(s) 'Цикл для поиска пробелов If (Mid(s, i, 1) <> " ") And (Mid(s, i, 1) <> ".") And (Mid(s, i, 1) <> "!") And (Mid(s, i, 1) <> "?") Then m(k) = m(k) + Mid(s, i, 1)'Формирование очередного элемента массива Else k = k + 1 'Увеличение номера элемента массива End If Next i For i = 1 To k Text2.Text = Text2.Text + m(i) + Chr(13) + Chr(10) Next i End Sub Файлы В зависимости от организационной структуры хранения информации в файле и способа доступа к этой информации принято выделять три типа файлов: 1. Файлы последовательного доступа. Как правило, это текстовые файлы. Структурной единицей таких файлов является строка. Данные в них хранятся в виде цепочки ASCII кодов и могут обрабатываться любым текстовым редактором. Запись и считывание данных при работе с такими файлами происходит строго последовательно (нельзя получить доступ ко второй записи, не прочитав первой). 2. Файлы произвольного доступа. Это структурированные файлы, которые содержат информацию в виде записей. Например, файлы баз данных. Компоненты (поля) в записях таких файлов могут иметь разные типы. Но все записи файлов последовательного доступа имеют постоянную длину и порядковый номер. Это позволяет получить доступ сразу к нужной записи без последовательного просмотра всех предыдущих. 3. Бинарные (двоичные) файлы. Это могут быть файлы последовательного доступа, но информация в них представлена в виде байтов или блоков байтов. К таким файлам можно отнести файлы с расширением exe, т.е. программные. Это могут быть файлы произвольного доступа: размер записи у них всегда равен 1 байту, и любой байт можно считать по его порядковому номеру.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-12; просмотров: 490; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.58.161.14 (0.028 с.) |