Над строками и целыми определена операция *: 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ведут себя как размерные: после
vars2 := 'Hello';
vars1 := s2;
s1[2] := 'a';
строка s2 не изменится. Аналогично при передаче строки по значению в подпрограмму создается копия строки, т.е. обеспечивается поведение, характерное для Delphi Object Pascal, а не для .NET.
Однако, строке можно присвоить nil, что необходимо для работы с NET-кодом.
Кроме того, в PascalABC.NETреализованы размерные строки. Для их описания используется тип string[n], где n - константа целого типа, указывающая длину строки. Размерные строки, в отличие от обычных, можно использовать как компоненты типизированных файлов. Для совместимости с Delphi Object Pascal в стандартном модуле описан тип shortstring=string[255].
Стандартные подпрограммы работы со строками.
Члены класса string.
Методы типа string
Тип string в PascalABC.NET является классом и содержит ряд свойств, статических и экземплярных методов, а также методов расширения.
В методах класса string считается, что строки индексируются с нуля. Кроме того, ни один метод не меняет строку, т.к. строки в .NET являются неизменяемыми.
Свойства класса String
Свойство
|
Описание
|
s[i]
|
Индексное свойство. Возвращает или позволяет изменить i-тый символ строки s. Строки в PascalABC.NET индексируются от 1.
|
Length: integer
|
Возвращает длину строки
|
Статические методы класса String
Метод
|
Описание
|
String.Compare(s1,s2: string): integer
|
Сравнивает строки s1 и s2. Возвращает число <0 если s10 если s1>s2
|
String.Compare(s1,s2: string; ignorecase: boolean): integer
|
То же. Если ignorecase=True, то строки сравниваются без учета регистра букв
|
String.Format(fmtstr: string, params arr: array ofobject): string;
|
Форматирует параметры arr согласно форматной строке fmtstr
|
String.Join(ss: array ofstring; delim: string): string
|
Возвращает строку, полученную слиянием строк ss с использованием delim в качестве разделителя
|
Экземплярные методы класса String
Отметим, что все экземплярные методы не меняют строку, как это может показаться на первый взгляд, а при необходимости возвращают измененную строку. Кроме того, считается, что символы в сроке индексируются с нуля.
Метод
|
Описание
|
Contains(s: string): boolean
|
Возвращает True, если текущая строка содержит s, и False в противном случае
|
EndsWith(s: string): boolean
|
Возвращает True, если текущая строка заканчивается на s, и False в противном случае
|
IndexOf(s: string): integer
|
Возвращает индекс первого вхождения подстроки s в текущую строку или -1 если подстрока не найдена
|
IndexOf(s: string; start,count: integer): integer
|
Возвращает индекс первого вхождения подстроки s в текущую строку или -1 если подстрока не найдена. Поиск начинается с символа с номером start и распространяется на следующие count символов
|
IndexOfAny(cc: array ofchar): integer
|
Возвращает индекс первого вхождения любого символа из массива сс
|
Insert(from: integer; s: string): string
|
Возвращает строку, полученную из исходной строки вставкой подстроки s в позицию from
|
LastIndexOf(s: string): integer
|
Возвращает индекс последнего вхождения подстроки s в текущую строку
|
LastIndexOf(s: string; start,count: integer): integer
|
Возвращает индекс последнего вхождения подстроки s в текущую строку или -1 если подстрока не найдена. Поиск начинается с символа с номером start и распространяется на следующие count символов
|
LastIndexOfAny(a: array ofchar): integer
|
Возвращает индекс последнего вхождения любого символа из массива сс
|
PadLeft(n: integer): string
|
Возвращает строку, полученную из исходной строки выравниванием по правому краю с заполнением пробелами слева до длины n
|
PadRight(n: integer): string
|
Возвращает строку, полученную из исходной строки выравниванием по левому краю с заполнением пробелами справа до длины n
|
Remove(from,len: integer): string
|
Возвращает строку, полученную из исходной строки удалением len симолов с позиции from
|
Читать дальше