Строки в Паскаль

При решении различных классов задач возникает необходимость обработки текстовых данных. Инструментом, позволяющим выполнить необходимые действия, являются строки.

Строковой тип описывается ключевым словом string и состоит из последовательно расположенного набора элементов символьного типа char. Строки в PascalABC.NET, в отличии от других компиляторов языка Паскаль, могут иметь произвольную длину.

Строковой тип можно задать двумя способами: непосредственно в разделе описания переменных или через определенный строковой тип, например:

  • type
  • str = string[100];
  • var
  • s: string; {Стандартная строка}
  • s1: string[10]; {Размерная строка}
  • s2: str; {Cтрока описанного типа}

Строку можно инициализировать, как и переменные других типов, в разделе описания переменных, например:

s4: string := 'New string';

Операции над строками в Паскаль

Над строками определены операции присваивания, конкатенации и операции отношения.

Сравнение строк происходит лексикографически слева направо до первого несовпадающего символа:

  • строки равны, если они посимвольно эквивалентны и имеют одинаковую длину: 'abc' ='abc';
  • первая строка больше второй строки, если:
    • ее первый несовпадающий символ имеет больший код: 'abd' > 'abc';
    • они посимвольно эквивалентны и первая строка длиннее второй 'abc' > 'ab'.

Операция конкатенация выполняет слияние нескольких строк в одну, например:

'Pascal' + 'ABC' + '.NET' = 'PascalABC.NET';

Внимание: операции отношения имеют более низкий приоритет в сравнении с операцией конкатенации (т. е. в строковом выражении 'ab' + 'd' > 'abc' сначала произойдет слияние строк в левой части и только потом выполнится операция сравнение).

В PascalABC.NET для строк можно использовать расширенный оператор присваивания +=, например:

  • var s: string := 'PascalABC.';
  • s += 'NET'; {s = 'PascalABC.NET' }
  • сложение с числом (при этом число предварительно преобразуется в строковое представление), например:

    • s1 := 'Масса = ' + 100 + ' кг'; {Масса = 100 кг}
    • s2 := 'Pi = ' + 3.14; {s = 'Pi = 3.14'}
  • операцию * - образование из строки новой строки повторенной n раз:
    s * n или n * s

    • s1 := 'a' * 10;
    • s2 := 10 * 'abc';

Для обращения к отдельным символам строки, также, как и в массивах, можно использовать индекс: запись s[i] дает доступ к i-тому символу в строке, нумерация начинается с единицы.

  • var s: string := 'PascalABC.NET';
  • for i := 1 to Length(s) do
  • if i mod 2 = 0 then s[i] := '0';
  • writeln(s); {s = 'P0s0a0A0C0N0T'}

Если индекс i выходит за пределы длины строки, то генерируется исключение, при этом программного прерывания не происходит.

Для обработки строк в языке программирования Паскаль используется набор стандартных процедур и функций (в примере выше применяется стандартная функция Length(s), возвращающая длину строки).