unit stringwork;
interface
function InversionString(Sx : string) : string;
function LTrimUnChar(UnChar , Sx : string) : string;
function RTrimUnChar(UnChar , Sx : string) : string;
function AllTrimUnChar(UnChar , Sx : string) : string;
function CountWord(UnChar , Sx : string) : integer;
implementation
{Инвертирует строку}
function InversionString(Sx : string) : string;
Var
i : integer;
begin
Result:=Sx;
if Length(Sx)>0 then begin
Result:='';
for i:=Length(Sx) downto 1 do
begin
Result:=Result+Sx;
end;
end;
end;
{Удаляет НЕсимволы слева}
function LTrimUnChar(UnChar , Sx : string) : string;
//UnChar - строка разделителей(не символов). Аналог множества
//Sx - входная строка
Var
YesExit : byte;
begin
Result:=Sx;
if (length(Sx)>0) and (length(UnChar)>0) then begin
YesExit:=0;
while YesExit<=0 do
begin
if POS(Result[1],UnChar)>0 then begin
Delete(Result,1,1);
end
else begin
YesExit:=2;
end;
if length(Result)<=0 then YesExit:=1;
end;
end;
end;
{Удаляет НЕсимволы справа}
function RTrimUnChar(UnChar , Sx : string) : string;
//UnChar - строка разделителей(не символов). Аналог множества
//Sx - входная строка
begin
Result:=InversionString(Sx);
Result:=LTrimUnChar(UnChar,Result);
Result:=InversionString(Result);
end;
{Удаляет НЕсимволы слева и справа}
function AllTrimUnChar(UnChar , Sx : string) : string;
//UnChar - строка разделителей(не символов). Аналог множества
//Sx - входная строка
begin
Result:=LTrimUnChar(UnChar,Sx);
Result:=RTrimUnChar(UnChar,Result);
end;
//Определяет кол-во слов в строке
function CountWord(UnChar , Sx : string) : integer;
//UnChar - строка разделителей(не символов). Аналог множества
//Sx - входная строка
var
InWord : byte;
i : integer;
begin
Result:=0;
InWord := 0;
i:=0;
while i<length(Sx) do
begin
i:=i+1;
if POS(Sx,UnChar)<=0 then begin
if InWord<=0 then Result:=Result+1; //переход на начало слова
InWord:=1; //Мы внутри слова
end
else begin
InWord:=0; //Мы снаружи слова
end;
end;
end;
end.