logo
Методичка_Delphi_Ч1

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

Сцепление (конкатенация) строк осуществляется операцией "+". Например, выражение S1+S2 даст в результате новую строку, в которой после символов строки S1 будут расположены символы строки S2.

Для строк определены операции сравнения >, >=, <, <=, =, <>. Большей считается строка, у которой код первого из не совпавших символов больше. Обратите внимание, оценивается не длина строки, а коды символов. Именно на основе такого способа сравнения упорядочены слова в словарях.

В программах можно обращаться и к отдельным символам строки. Например, S[i] - это символ, расположенный в позиции i строки (индексы отсчитываются от 1, т.е. индекс 1 соответствует первому символу). Выражение S[i] возвращает значение типа Char.

При работе со строками не следует забывать о том, что задание максимального размера строки при ее объявлении не означает, что строка имеет такую длину. Размер строки устанавливается во время операции присваивания значения всей строке, и не изменяется при изменении отдельного символа.

Пусть мы хотим создать строку, состоящую из 15 случайных символов ‘0’ и ‘1’. На первый взгляд может показаться, что процедура, приведенная ниже, даст правильный результат, однако это не так. Фактическая длина строки в этой процедуре равна 0, и такой же она останется после завершения цикла.

procedure TForm1.Button1Click(Sender: TObject);

var s: String[20]; i: integer;

begin

for i:=1 to 15 do s[i] := intToStr(random(2))[1];

edit1.Text:=s;

end;

Желаемый результат мы получим при таком варианте:

procedure TForm1.Button1Click(Sender: TObject);

var s: String[20]; i: integer;

begin

s:='';

for i:=1 to 20 do s := s+intToStr(random(2));

edit1.Text:=s;

end;

      1. Некоторые стандартные процедуры и функции для обработки строк

Функция Length

Объявление функции:

function Length (s : String): Integer;

Функция возвращает число символов в строке S, которая передана функции в качестве параметра.

Например, выражение Length(‘Десна’) вернет значение 5.

Функция AnsiUpperCase

Объявления функций:

function AnsiUpperCase (const s : String): String

Функция возвращает новую строку, полученную из s, путем преобразования символов букв к верхнему регистру. Функция AnsiUpperCase применима для латинских и русских текстов.

Например, выражение AnsiUpperCase(‘Десна’) вернет значение ‘ДЕСНА’.

Для использования функции следует подключить модуль SysUtils.

Функция AnsiLowerCase

Объявления функций:

function AnsiLowerCase (const s : String): String

Функция возвращает новую строку, полученную из S, путем преобразования символов букв к нижнему регистру. Функция AnsiLowerCase применима для латинских и русских текстов.

Например, выражение AnsiLowerCase(‘Десна’) вернет значение ‘десна’.

Для использования функции следует подключить модуль SysUtils.

Функция AnsiCompareText

Объявление функции:

function AnsiCompareText (const s1, s2: string): Integer;

Функция сравнивает две строки ANSI s1 и s2 без учета регистра. Возвращает значение < 0, если s1 < s2, 0, если s1 = s2, и > 0, если s1 > s2.

Функция Copy

Объявление функции:

function Copy (s : String; index, count : Integer): String;

Функция возвращает подстроку строки s, начинающуюся с позиции index и содержащую до count символов.

Если index выходит за пределы строки – возвращается пустая строка.

Если count определяет больше символов, чем возможно, возвращается максимально возможное число символов.

Например, выражение Сopy(‘Десна – прекрасная река’, 12, 7) вернет значение ‘красная’.