Delphi. Урок 13. Работа со строками 2/2
Процедура Delete позволяет удалить из строки указанное количество символов, начиная с указанного индекса в строке. При этом удаление происходит со сдвигом последующих символов на длину удаляемой подстроки влево.
1

2

3

4

5

6
 
var

  a:string;

begin

  a := '123123abc123123';

  Delete(a, 7, 3); // a = "123123123123"

end;
Копирование подстроки из строки

Функция Copy позволяет получить дубликат подстроки определенной длинны, начинающейся с символа с указанным индексом.








 
 
1

2

3

4

5

6
 
var

  a, b:string;

begin

  a := 'cybern.ru is the best website about programming';

  b := Copy(a, 1, 9); // b = "cybern.ru"

end;
Замена одной подстроки на другую подстроку внутри строки

Для замены одной подстроки на другую подстроку внутри исходной строки используют функцию StringReplace. Нужно признать, что функция довольно удобная и обойти стороной ее никак нельзя. Довольно полезной возможностью этой функции является то, что она может заменять сразу несколько вхождений одной подстроки на другую, а также может игнорировать регистр. Последние две возможности являются опциональными (необязательными) и при необходимости их можно не использовать. Рассмотрим пример:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20
 
var

  a, b, c: string;

begin

  a := 'aBc Abc abC 123 cba cba cba'; // исходная строка

  b := 'abc'; // заменяемая подстрока

  c := 'test'; // заменяющая подстрока

  // Далее параметр [rfReplaceAll,rfIgnoreCase] обозначают как раз те самые опции в работе функции.

  // Называются такие параметры "флагами".

  // Такие флаги обязательно нужно указывать внутри квадратных скобок.

  // Сами флаги перечисляются через запятую.

  // Все флаги, находящиеся внутри квадратных скобок являются обычным параметром функции.

  // Флаг rfReplaceAll говорит функции, что нужно будет производить замену всех вхождений.

  // Если этот флаг убрать (тогда выглядеть флаги будут так "[rfIgnoreCase]"),

  // то заменится только первое вхождение в строке a.

  // Флаг rfIgnoreCase указывает, что при поиске вхождений строк b регистр учитываться не будет.

  // Если все флаги вам не нужны, то это НЕ значит, что параметр вовсе не нужно указывать.

  // В таком случае укажите в качестве флагов "[]".

  a := StringReplace(a,b,c, [rfReplaceAll,rfIgnoreCase]);

  // В результате строка a будет содержать "test test test 123 cba cba cba"

end;
 

Если вы не помните какие флаги есть у функции, то лучше укажите сначала «[«, а затем нажмите «Ctrl+Пробел», после чего откроется список с подсказками, в котором будут перечислены все возможные флаги. 
Следующий урок

Категория: delphi 7 | Добавил: ghost_mod (14.09.2016)
Просмотров: 649 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email:
Подписка:1
Код *: