В языке Pascal можно выделять часть строки ( подстроку). Для этого используется операция копирования.
Общий вид операции следующий:
s1 := copy(s, index, count);
Данная команда берет срез из строки s , начиная с символа с индексом index длиной count.
Например,
s1 := copy(s, 3, 5);
Если index больше длины строки, то возвращается пустая строка. Если count символов, начиная с index, выходят за длину строки, то возвращается строка s, начиная с index и до конца.
А вот как легко можно сделать реверс строки:
s := '0123456789';
s1 := reverseString(s); // s1 = '0123'
|
Чтобы удалить часть строки, нужно воспользоваться методом delete(s, firstIndex, count): он из строки s удаляет count символов, начиная с firstIndex
s := '0123456789';
delete(s, 4, 6); // s1="0129"
Чтобы скопировать часть строки, можно воспользоваться методом copy(s, index, count) - он вернёт часть строки s, начиная с индекса index и длиной count
s := '123456789';
s1 := copy(s, 3, 4); // s1 = '3456'
|
В Pascal существует множество подпрограмм для работы со строками. Многие из них вызываются с помощью точечной нотации и называются методами. Полный список методов работы со строками можно найти в Интернете.
Познакомимся с некоторыми из них.
s := 'aAbBcC'
sUp := upercase(s); // sUp = "AABBCC" - метод, который переводит каждый символ строки в верхний регистр
sLow := lowercase(s) // sLow = "aabbcc" - метод, который переводит каждый символ строки в нижний регистр
Метод всегда записывается с круглыми скобками. Внутри скобок идут какие-либо параметры, если они необходимы.
Еще один полезный метод - val (s, v, ind) - метод проверки, все ли символы строки цифры. s - исходная строка, в v записывается число, если исходная строка являлась числом, и 0 иначе, в ind записывается номер первого индекса s, который не является цифрой, или 0, если s - это число.
s := 'ab1c'
val(s, v, ind);
writeln(v, ' ', ind); // 0 3
s := '123';
val(s, v, ind);
w(vriteln, ' ', ind); // 123 0
Полезный метод trim(s) - позволяет удалить пробелы в начале и в конце строки
s := ' ab 1c ';
print('s=', trim(s)); // s=ab 1c
|
Чтобы в Pascal выполнить поиск в строке, используют метод pos() .
Он имеет возвращает индекс 1-го вхождения подстроки в строку:
pos(originalString, smallString) - ищет в originalString smallString
Когда подстрока не найдена, метод возвращает 0:
welcome := 'Hello world! Goodbye world!';
index := pos(welcome, 'wor');
writeln(index); // 7
index := pos(welcome, 'sun');
writeln(index); // 0
Обратите внимание: данные методы не ищут количество вхождений, а всего лишь определяют, есть ли такая подстрока в строке или нет.
|
Чтобы в Pascal заменить в строке одну подстроку на другую, применяют метод stringReplace():
stringReplace(original, old, new, flag): в строке originalString подстрока old заменяется на new, flag принимает одно из значений rfReplaceAll или rfIgnoreCase, записываемое в квадратных скобках. В первом случае заменяются все вхождения old в originalString, во втором - только первое.
Пример замены в строке в Pascal:
phone = '+1-234-567-89-10'
// дефисы меняются на пробелы
edited_phone := stringreplace(phone, '-', ' ', [rfReplaceAll]);
writeln(edited_phone); // +1 234 567 89 10
// дефисы удаляются
edited_phone := stringreplace(phone, '-', '', [rfReplaceAll]);
writeln(edited_phone); // +12345678910
// меняется только первый дефис
edited_phone := replace(phone, '-', '', [rfIgnoreCase]);
writeln(edited_phone); // +1234-567-89-10
|