Строки. Методы

В языке 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 заменяется на newflag принимает одно из значений 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