Лабораторная работа по строкам
Оператор или функция |
Тип |
Выполняемые действия (для операторов) или возвращаемые
значения (для функций) |
Asc (строка) |
Функция |
Числовой код первого символа в строке |
СЬг(код символа) |
Функция |
Символ, соответствующий значению параметра кодсимвола |
Filter (массив
источник, эталон, включает, метод сравнения) |
Функция (только в VBA6) |
Массив, состоящий только из тех строк из
массива-источника, которые содержат эталон Аргумент мае-сивисточник должен
быть массивом строковых значений Если необязательный аргумент включает равен
False, то
функция возвратит только строки, которые не включают эталон |
Format(строка) |
Функция |
См выше раздел "Форматирование данных* |
Hex(число) |
Функция |
Строка, содержащая шестнадцатеричное представление
числа |
InStr(старт,
строка!, строка2) |
Функция |
Число, соответствующее позиции строки 2 в строке 1;
поиск начинается с позиции старт, этот аргумент не обязателен |
InStrRev(cTpOKal,
строка2, старт) |
Функция (только в VBA6) |
Число, соответствующее позиции строки 2 в строке 1,
считая с правого края строки 1,
поиск начинается с позиции старт, этот аргумент не обязателен |
Join(массивстрок,
разделитель) |
Функция (только в VBA6) |
Одна строка, комбинирующая все строки из мае-сивстрок,
который должен быть массивом строковых данных По умолчанию Join вставляет пробел между строками,
взятыми из массива строк, но можно задать и другой символ разделителя (символ
необходимо заключить в кавычки) |
Left(строка, длина) |
Функция |
Строка указанной длины из символов, взятых подряд из
строки, задаваемой аргументом строка, начиная с левого края последней |
Len(строка) |
Функция |
Число символов в строке |
LCase(строка) |
Функция |
Копия строки, представленная символами нижнего регистра |
LSet строковая
переменная = строка |
Оператор |
) Устанавливает
значение строковой переменной, равное заданной строке, без изменения длины
этой строковой переменной и с размещением заданной строки начиная с левого
края переменной |
LTrim(с трока) |
Функция |
Новая строка, содержащая копию данной строки без
пробелов в начале |
Mid(строка,
старт, длина) |
Функция |
Новая строка заданной длины из символов данной строки,
взятых подряд, начиная с позиции старт |
Mid(строковая
перем енная, старт, длина) = строка |
Оператор |
Начиная с позиции старт заменяет символами данной
строки заданное аргументом длина число символов в строковой переменной |
Oct(число) |
Функция |
Строка, содержащая восьмеричное представление числа |
Replace(строка,
найти, заменить, старт, числозамен, методсравнения) |
Функция (только в VBA6) |
Новая строка, получаемая в результате замены в заданной
строке текста найти текстом заменить. Аргументы старт, числозамен и
метод.сравнения не обязательны. Используйте числозамен, чтобы указать,
сколько замен следует сделать, если текст найти встречается несколько раз
(по умолчанию заменяются все случаи появления текста найти в строке) |
Right(строка,
длина) |
Функция |
Строка указанной длины из символов, взятых подряд из
строки, задаваемой аргументом строка, начиная с правого края последней |
RSet строковая
переменная = строка |
Оператор |
Устанавливает значение строковой переменной, равное
заданной строке, без изменения длины этой строковой переменной и с
размещением заданной строки с правого края переменной |
RTrim(строка) |
Функция |
Новая строка, содержащая копию данной строки без
пробелов в конце |
Оператор или функция |
Тип |
Выполняемые действия (для операторов) или возвращаемые
значения (для функций) |
Space(число) |
Функция |
Строка, состоящая из указанного числа пробелов |
Split(строка,
разделитель, предел, метод сравнения) |
Функция (только в VBA6) |
Массив строк, полученный в результате разделения заданной
строки. По умолчанию оригинальная строка разделяется по пробелам, но можно
задать разделитель, отличный от пробела (для задания разделителя используйте
символ, заключенный в кавычки). Необязательный аргумент предел задает
максимальное число строк в возвращаемом массиве |
StrComp(строка!, строка2) |
Функция |
0, если две строки равны;
-1, если строка 1 меньше, чем
строка2; 1, если строка! больше, чем
строка2 (о срав- UOUUU fTtVW fU rn9QU Q\ ПСПШ'1 VA^JUlk uM. 1 JluUy У) |
StrConv(строка, ме-тодперевода) |
Функция |
Новая строка, созданная на основе заданной указанным мвтллпи ncnoDonfi MCIU^UM ПСръВЦЦы |
String(число, символ) |
Функция |
Строка, состоящая из заданного числа повторяющихся
символов |
StrReverse (строка) |
Функция (только в VBA6) |
Строка, содержащая символы заданной строки в обратном
порядке |
Trim(строка) |
Функция |
Новая строка, содержащая копию” данной строки без
пробелов в начале и конце |
UCase(строка) |
Функция |
Копия строки, представленная символами верхнего регистра |
Если бы VBA читал книги вместо программного
кода, я бы объяснил ему, что эти действия можно выполнить следующим образом.
1. Сначала вызывается функция Len, которая вычисляет длину
оригинальной строки.
2. Из результата, полученного в п. 1, вычитается 7, поскольку
каждое из званий занимает семь символов в конце строки (включая запятую и
пробел).
В результате получится число, которому должна быть равна длина новой
строки.
3. Вызывается функция Left, использующая вычисленную длину в
качестве значения второго аргумента.
Функция Left читает столько символов, сколько
задано вторым аргументом, из строки, указанной первым аргументом, возвращая
только эти прочитанные символы.
4. Новая, более короткая строка, возвращенная функцией Left, присваивается переменной strHoaaH.
Извлечение символов из cтрок
Продолжая работать теперь с новым списком уже без
званий, предположим, что теперь вас попросили извлечь имена с отчествами и
поместить их в новый список Эту задачу можно выполнить с помощью следующего
оператора
Функция Mid извлекает символы
из любого места в строке, которую вы укажете в виде аргумента Второй же
аргумент этой функции говорит, с какого места в этой строке следует начать
извлечение символов. В данном случае этот аргумент представляет собой
выражение, состоящее из функции inStr плюс 2
Функция InStr ищет в заданной строке (первый
аргумент) другую строку (второй аргумент). В данном случае второй аргумент — это запятая, которая в списке следует за фамилией
Значение, которое возвращает InStr, соответствует номеру
позиции в первой строке, где встречается вторая строка, — теперь вы знаете, где заканчивается фамилия
К значению,
возвращенному функцией InStr, добавляется 2,
чтобы пропустить запятую и следующий за ней пробел и найти позицию, с которой
начинается имя Теперь функция Mid извлечет символы начиная с этого места и
до конца строки (поскольку не указан третий, необязательный аргумент длина)
Условия задач
Задача 1.
Написать и протестировать функцию STRP(str1,str2), которая возвращает
позицию первого вхождение символа из
строки str2 в
строку str1. Если
не один символ строки str2 не
входит в строку str1, то
возвратить NULL.
Задача 2.
Ввести предложение, слова в котором разделены пробелами и запятыми. Распечатать
это предложение, удалив из него те слова , которые встретились там более одного раза.
Задача 3.
Написать и протестировать функцию DELETE (s1,s2), которая удаляет из строки s1 все символы, встречающиеся в
строке s2.
Задача 4.
Даны две символьные строки состоящие только из цифр (длина каждой -
более 10 символов). Считая, что в этих строках находятся очень длинные целые
числа, сформировать третью строку - сумму этих чисел.
Задача 5.
Написать и протестировать функцию ESCAPE(str1,str2), которая при копировании
текста из str1 в str2 преобразует литеры
"новая строка" и "табуляция" в видимые в последовательности
литер \n и \t.
Сделать также функцию, выполняющую обратное преобразование.
Задача 6.
Написать и протестировать
функцию I_TO_B(n,s,b), которая переводит целое число n в строку s, представляющую число в
системе счисления вс основанием b.
Задача 7.
Написать и протестировать функцию NXT_BLNK(str,pos), которая анализирует строку str, начиная с позиции pos, и возвращает номер первого
найденного пробела. Если пробела нет, возвращает 0; если pos <0
или больше длины строки,то возвращается -1.
Пример решения задачи 3
Private Sub CommandButton1_Click()
Dim s1, s2, c1, c2, cur As String
Dim n, m, k As Integer
s1 =
InputBox("Введите первую строку")
s2 =
InputBox("Введите вторую строку")
n = Len(s1) 'вычисление длины строк
m = Len(s2)
If ((n = 0) Or (m = 0))
Then ' проверка не пустые ли строки
MsgBox ("Одна строка или обе
пустые!!!!!!!!")
Exit Sub
End If
k = n
For i = 1 To m ' Взятие поочередно символов второй
c2 = Mid(s2, i, 1) второй строки
For j = 1 To n
c1 = Mid(s1,
j, 1)
If c1 = c2 Then ' Удаление символов второй строки из
cur = Right(s1, k - j) первой
k = k - 1
s1 = Left(s1,
j - 1) + cur
End If
Next j
Next i
MsgBox ("Итоговая
строка: " + s1) ' Вывод результатов
End Sub
Private Sub CommandButton2_Click()
uf.Hide
End Sub