|
Для начала рассмотрим функцию 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)
выведет пустую строку.
Для "вырезания" части фрагмента текстовой части под номером, разделенным символом
(извлечение подстроки по номеру разделителя), потребуется функция CopyS.
function CopyS(s: string; index: byte; c: char): string;
var p: integer;
begin
Result:='';
if index<1 then
index:=1;
while index>0 do
begin
Dec(index);
p:=Pos(c, s);
if index=0 then
begin
if p=0 then
Result:=s else
Result:=Copy(s, 1, p-1);
Exit;
end;
if p>0 then
Delete(s, 1, p) else
Exit;
end;
end;
где:
s – исходная строка;
index – порядковый номер значения;
c – разделитель.
Например,
CopyS('апрель,июль,февраль,май,август,март,июнь,октябрь,сентябрь', 5, ',')
выведет 'август';
CopyS('зима лето весна осень', 6, ' ') выведет
пустую строку, потому что нет 6-го значения, разделенного пробелами.
|