Строковый тип

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

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

Над строками определены операции сравнения: < > <= >= = <>. Сравнение строк на неравенство осуществляется лексикографически: s1 < s2 если для первого несовпадающего символа с номером i s1[i]<s2[i] или все символы строк совпадают, но s1 короче s2.

Операция + для строк означает конкатенацию (слияние) строк. Например: 'Петя'+'Маша' = 'ПетяМаша'.

Расширенный оператор присваивания += для строк добавляет в конец строки - левого операнда строку - правый операнд. Например:

var s: string := 'Петя';
s += 'Маша'; // s = 'ПетяМаша'

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

s := 'Ширина: ' + 15; // s = 'Ширина: 15'
s := 20.5 + ''; // s = '20.5'
s += 1; // s = '20.51'

Над строками и целыми определена операция *: s*n и n*s означает строку, образованную из строки s, повторенной n раз:

s := '*'*10; // s = '**********'
    s := 5*'ab' // s = 'ababababab'
    s := 'd'; s *= 3; // s = 'ddd'   

Над строками определена также операция взятия среза.

Строки реализуются типом System.String платформы .NET и представляют собой ссылочный тип. Таким образом, все операции над строками унаследованы от типа System.String. Однако, в отличие от .NET - строк, строки в PascalABC.NET изменяемы. Например, можно изменить s[i] (в .NET нельзя). Более того, строки string в PascalABC.NET ведут себя как размерные: после

var s2 := 'Hello';
var s1 := s2;
s1[2] := 'a';

строка s2 не изменится. Здесь происходит так называемое копирование при записи (Copy On Write) - при изменении символа строки создаётся её копия, в результате s1 и s2 начинают ссылаться на разные участки памяти.

По умолчанию строки инициализируются пустой строкой (в .NET - значением nil). Однако, строке можно присвоить nil, что необходимо для работы с NET-кодом.

Кроме того, для совместимости с Delphi Object Pascal в PascalABC.NET реализованы короткие строки вида string[n].

Стандартные подпрограммы работы со строками.

Члены класса string.