Для начала рассмотрим функцию Copy , которая создает копию части строки
(или динамического массива). Она возвращает строку, состоящую из указанных в
Count количестве символов, начиная с Index символа.
Если Count превышает количество символов, оставшихся в исходной строке,
копируются символы от Index до конца строки. Аналогичным образом
копируется часть массива. Необходимо помнить, что первый символ строки начинается с
1, а первый элемент массива имеет индекс, равный 0.
function Copy(S: <string or dynamic array>; Index, Count: Integer): string;
где:
S – исходная строка (исходный массив);
Index – начальная позиция (индекс);
Count – количество символов (элементов);
В этой статье рассматривается строка символов.
Например,
Copy('Копируется часть строки или массива', 18, 6)
выведет 'строки';
Copy('Копируется часть строки или массива', 29, 100)
выведет 'массива' (можно вместо 100
прописать MaxInt ; а если в первом параметре содержится строковая
переменная S , можно указать Length(S) :
Copy(S, 29, Length(S)) );
Copy('Копируется часть строки или массива', -10, 4)
выведет 'Копи' (Упс! Бывает и так!);
Copy('Копируется часть строки или массива', 12, -5)
выведет '' (пустая строка).
Для "вырезания" части фрагмента текстовой части под номером, разделенным символом,
потребуется функция CopyN .
function CopyN(s: string; index: byte; c: char): string;
var i, n, l: integer;
begin
n:=1;
l:=0;
if index<1 then
index:=1;
for i:=1 to Length(s) do
begin
if s[i]=c then
begin
Dec(index);
if index<=0 then
Break;
if index=1 then
n:=i+1;
end else
if index=1 then
Inc(l);
end;
Result:=Copy(s, n, l);
end;
где:
s – исходная строка;
index – порядковый номер значения;
c – разделитель.
Например,
CopyN('апрель,июль,февраль,май,август,март,июнь,октябрь,сентябрь', 5, ',')
выведет 'август';
CopyN('зима лето весна осень', 6, ' ') выведет
'' (пустая строка, потому что нет 6-го значения, разделенного пробелами).
|