Строки

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

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

Строки в PascalABC.NET имеют тип string.

begin
  var s: string := 'PascalABC.NET';
  Println(s);
end.

Символы строки

Строка состоит из символов типа char.

begin
  var s := 'Pascalabc';
  var c: char := s[1];

  Println(c);
end.

Результат:

P

Длина строки

Свойство Length возвращает количество символов в строке.

begin
  var s := 'PascalABC';

  Println(s.Length);
end.

Результат:

9

Доступ к символу по индексу

По умолчанию символы строки нумеруются начиная с 1.

begin
  var s := 'PascalABC';

  Println(s[1]);
  Println(s[3]);
end.

Результат:

P
s

Индексация с конца

Индекс ^1 обозначает последний символ строки, ^2 — предпоследний.

begin
  var s := 'PascalABC';

  Println(s[^1]);
  Println(s[^2]);
end.

Результат:

C
B

Нулевая индексация строк

Директива компилятора {$zerobasedstrings} включает нумерацию символов строки начиная с 0.

{$zerobasedstrings}

begin
  var s := 'PascalABC';

  Println(s[0]);
  Println(s[1]);
end.

Результат:

P
a

Изменение символа строки

Символ строки можно изменить по его индексу.

begin
  var s := 'Pascalabc';

  s[1] := 'p';

  Println(s);
end.

Результат:

pascalabc

Перебор символов строки

Цикл foreach позволяет последовательно перебрать все символы строки.

begin
  var s := 'Pascalabc';

  foreach var c in s do
    Print(c);
end.

Результат:

P a s c a l a b c

Конкатенация строк

Операция + соединяет строки.

begin
  var s1 := 'Pascal';
  var s2 := 'ABC.NET';

  var s := s1 + s2;

  Println(s);
end.

Результат:

PascalABC.NET

Повторение строки

Операция * позволяет повторить строку несколько раз.

begin
  var s := 'abc';

  Println(s * 3);
end.

Результат:

abcabcabc

Проверка вхождения символа

Операция in проверяет, содержится ли подстрока в строке.

begin
  var s := 'PascalABC.NET';

  Println('ABC' in s);
  Println('z' in s);
end.

Результат:

True
False

Свойства символов

Для символов типа char можно проверять, является ли символ буквой, цифрой или буквой определённого регистра.

begin
  var c: char := 'A';

  Println(c.IsLetter);
  Println(c.IsDigit);
  Println(c.IsUpper);
  Println(c.IsLower);
end.

Результат:

True
False
True
False

Изменение регистра строки

Методы ToUpper и ToLower преобразуют регистр всех букв строки.

begin
  var s := 'PascalABC.NET';

  Println(s.ToUpper);
  Println(s.ToLower);
end.

Результат:

PASCALABC.NET
pascalabc.net

Подсчёт вхождений символа

Метод CountOf возвращает количество вхождений символа в строку.

begin
  var s := 'abracadabra';

  Println(s.CountOf('a'));
end.

Результат:

5

Поиск подстроки

Функция Pos возвращает позицию первого вхождения подстроки.

begin
  var s := 'PascalABC.NET';

  Println(Pos('ABC', s));
end.

Результат:

7

Замена подстроки

Метод Replace заменяет все вхождения одной подстроки другой.

begin
  var s := 'one two one';

  s := s.Replace('one', 'three');

  Println(s);
end.

Результат:

three two three

Удаление части строки

Процедура Delete удаляет из строки указанное количество символов с заданной позиции.

begin
  var s := 'PascalABC.NET';

  Delete(s, 7, 3);

  Println(s);
end.

Результат:

Pascal.NET

Вставка в строку

Процедура Insert вставляет подстроку в заданную позицию.

begin
  var s := 'Pascal.NET';

  Insert('ABC', s, 7);

  Println(s);
end.

Результат:

PascalABC.NET

Разбиение строки на слова

Метод ToWords разбивает текст на отдельные слова.

begin
  var s := 'PascalABC NET is a programming language';

  var words := s.ToWords;

  words.Count.Println;
end.

Результат:

6

Преобразование числа и строки

Число можно преобразовать в строку, а строковое представление числа — обратно в число.

begin
  var x: integer := 123;
  var s: string := x.ToString;
  var y: integer := s.ToInteger;

  Println(s,TypeName(s));
  Println(y,TypeName(y));
end.

Результат:

123 string
123 integer