SplitStr procedure
String / Filename routines |
![]() ![]() ![]() |
acUtils
|
type
|
TacSplitStrSide = (LEFT, RIGHT);
|
TacSplitStrSides = set of TacSplitStrSide;
|
|
procedure SplitStr(const SubStr, Str: String;
|
var LeftPart, RightPart: String;
|
MainSide: TacSplitStrSide = LEFT;
|
LeaveSeparatorOn: TacSplitStrSides = []);
|
The SplitStr procedure separates the string specified in Str parameter on two parts (FirstPart and SecondPart parameters) . The separator character or string specified in SubStr parameter.
|
|
MainSide specifies the part which should contains an entire string (Str), if SubStr not found in Str. This value can be LEFT or RIGHT.
|
|
LeaveSeparatorOn specifies the separated parts where you would like to leave the separator string.
|
SplitStr('@', 'email@address.com', FirstPart, SecondPart);
|
{ Results:
|
FirstPart = email
|
SecondPart = address.com
|
}
|
|
{ URL = https://secure.element5.com:443/register.html?productid=140005 }
|
SplitStr('://', URL, Protocol, HostName, RIGHT, []);
|
SplitStr('/', HostName, HostName, ObjectName, LEFT, [RIGHT]);
|
SplitStr(':', HostName, HostName, PortNumber, LEFT, []);
|
{ Results:
|
Protocol = "https"
|
HostName = "secure.element5.com"
|
ObjectName = "/register.html?productid=140005"
|
PortNumber = 443
|
}
|
procedure SplitStr(const SubStr, Str: String;
|
var LeftPart, RightPart: String;
|
MainSide: TacSplitStrSide {$IFDEF D4} = LEFT {$ENDIF};
|
LeaveSeparatorOn: TacSplitStrSides {$IFDEF D4} = [] {$ENDIF});
|
var
|
I: Integer;
|
begin
|
I := Pos(SubStr, Str);
|
if I <> 0 then
|
begin
|
LeftPart := Copy(Str, 1, I - 1);
|
RightPart := Copy(Str, I + Length(SubStr), Length(Str));
|
|
if LEFT in LeaveSeparatorOn then
|
LeftPart := LeftPart + SubStr;
|
|
if RIGHT in LeaveSeparatorOn then
|
RightPart := SubStr + RightPart;
|
end
|
else // if SubStr not found
|
if MainSide = LEFT then
|
begin
|
LeftPart := Str;
|
RightPart := '';
|
end
|
else
|
begin
|
LeftPart := '';
|
RightPart := Str;
|
end;
|
end;
|
LeftPart, RightPart and SplitFileNameAndParams routines.
|