Процедура 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+Пробел», после чего откроется список с подсказками, в котором будут перечислены все возможные флаги.  
Следующий урок 
		
	  |