Выделение подстроки по контексту

Материал из DRKB

Выделение подстроки по контексту[править | править код]

Вот 2 функции которыми я очень часто пользуюсь - они выделяют из строки подстроку, которая находится до или после ключевого словаю Задача надо сказать частая, например есть строка:

"Total-2.00$"

Нижеприведенные функции позволяют выделить из строки логические элементы:


function GetBefore(substr, str:string):string;
begin
 if Pos(substr, str) > 0 then
   Result := Copy(str, 1, Pos(substr, str)-1)
 else
   Result := '';
end;

function GetAfter(substr, str: string): string;
begin
 if Pos(substr, str)>0 then
   Result := Copy(str, Pos(substr, str) + Length(substr), Length(str))
 else
   Result := '';
end;

Примеры:

1) Найти название параметра (оно находится до символа "-"):

GetBefore('-', 'Total-2.00$')  // Результат будет "Total"

2) Найти сумму денег (оно находится после символа "-"):

GetAfter('-', 'Total-2.00$')  // Результат будет "2.00$"


3) Найти сумму денег без знака доллара и остатка строки(оно находится после символа "-", но до символа "$"):

GetBefore('$', GetAfter('-', 'Total-2.00$ (общая сумма)')  // Результат будет "2.00"


Author: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
ID: 00855