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

Previous  Top  Next

    
 

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

 

"Total-2.00$"

 

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

 

Code:

function GetBefore(substr, str:string):string;

{©Drkb v.3(2007): www.drkb.ru,

®Vit (Vitaly Nevzorov) - nevzorov@yahoo.com}

begin

if pos(substr,str)>0 then

  result:=copy(str,1,pos(substr,str)-1)

else

  result:='';

end;

 

function GetAfter(substr, str:string):string;

{©Drkb v.3(2007): www.drkb.ru,

®Vit (Vitaly Nevzorov) - nevzorov@yahoo.com}

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"

 

©Drkb::00855

Автор: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)