Книга: Описание языка PascalABC.NET

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

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

Строки имеют тип 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 не изменится. Аналогично при передаче строки по значению в подпрограмму создается копия строки, т.е. обеспечивается поведение, характерное для 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 если s1<s2, =0 если s1=s2 и >0 если s1>s2

String.Compare(s1,s2: string; ignorecase: boolean): integer

То же. Если ignorecase=True, то строки сравниваются без учета регистра букв

String.Format(fmtstr: string, params arr: array of object): string;

Форматирует параметры arr согласно форматной строке fmtstr

String.Join(ss: array of string; 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 of char): 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 of char): integer

Возвращает индекс последнего вхождения любого символа из массива сс

PadLeft(n: integer): string

Возвращает строку, полученную из исходной строки выравниванием по правому краю с заполнением пробелами слева до длины n

PadRight(n: integer): string

Возвращает строку, полученную из исходной строки выравниванием по левому краю с заполнением пробелами справа до длины n

Remove(from,len: integer): string

Возвращает строку, полученную из исходной строки удалением len симолов с позиции from

Replace(s1,s2: string): string

Возвращает строку, полученную из исходной строки заменой всех вхождений подстроки s1 на строку s2

Split(params delim: array of char): array of string

Возвращает массив строк, полученный расщеплением исходной строки на слова, при этом в качестве разделителей используется любой из символов delim (по умолчанию - пробел)

StartsWith(s: string): boolean

Возвращает True, если текущая строка начинается на s, и False в противном случае

Substring(from,len: integer): string

Возвращает подстроку исходной строки с позиции from длины len

ToCharArray: array of char

Возвращает динамический массив символов исходной строки

ToLower: string

Возвращает строку, приведенную к нижнему регистру

ToUpper: string

Возвращает строку, приведенную к верхнему регистру

Trim: string

Возвращает строку, полученную из исходной удалением лидирующих и завершающих пробелов

TrimEnd(params cc: array of char): string

Возвращает строку, полученную из исходной удалением завершающих символов из массива cc

TrimStart(params cc: array of char): string

Возвращает строку, полученную из исходной удалением лидирующих символов из массива cc

Методы расширения класса String

Некоторые методы расширения - стандартные для .NET, некоторые реализованы только в PascalABC.NET.

Метод

Описание

Inverse: string

Возвращает инверсию строки

Print

Выводит буквы строки, разделенные пробелом

Println

Выводит буквы строки, разделенные пробелом, и осуществляет переход на новую строку

ReadInteger(var from: integer): integer

Считывает из строки целое число с позиции from и возвращает его. Позиция from при этом увеличивается на считанный элемент

ReadReal(var from: integer): real

Считывает из строки вещественное число с позиции from и возвращает его. Позиция from при этом увеличивается на считанный элемент

ReadWord(var from: integer): string

Считывает из строки слово до пробела или до конца строки с позиции from и возвращает его. Позиция from при этом увеличивается на считанный элемент

ToInteger: integer

Преобразует строку к целому и возвращает его. Если это невозможно, генерируется исключение

ToIntegers: array of integer

В строке должны храниться целые, разделенные пробелами. Возвращается массив целых. Если это невозможно, генерируется исключение

ToReal: real

Преобразует строку к вещественному и возвращает его. Если это невозможно, генерируется исключение

ToReals: array of real

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

ToWords(params delim: array of char): array of string

Возвращает массив строк, полученный расщеплением исходной строки на слова, при этом в качестве разделителей используется любой из символов delim (по умолчанию - пробел). В отличие от s.Split не включает в итоговый массив пустые строки. В частности, это означает, что слова могут быть разделены несколькими разделителями delim

Оглавление книги


Генерация: 0.756. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз