Delphi极速字符串替换函数
//此极速字符串替换函数为[盒子论坛hq200306兄]所作,在此感谢!亲测原本48秒的长文本替换操作,现在只要几十毫秒不到!
function PosX(const SubStr, Str: string; Offset: Integer): Integer;
var
I, LIterCnt, L, J: Integer;
PSubStr, PS: PChar;
begin
L := Length(SubStr);
{ Calculate the number of possible iterations. Not valid if Offset < 1. }
LIterCnt := Length(Str) - Offset - L + 1;
{ Only continue if the number of iterations is positive or zero (there is space to check) }
if (Offset > 0) and (LIterCnt >= 0) and (L > 0) then
begin
PSubStr := PChar(SubStr);
PS := PChar(Str);
Inc(PS, Offset - 1);
for I := 0 to LIterCnt do
begin
J := 0;
while (J >= 0) and (J < L) do
begin
if UpCase(PS[I + J]) = UpCase(PSubStr[J]) then
Inc(J)
else
J := -1;
end;
if J >= L then
Exit(I + Offset);
end;
end;
Result := 0;
end;
function StringReplaceEx(const st, oldSubstr, newSubStr: string): string;
var
idx, len: Integer;
iStart: Integer;
sb: TStringBuilder;
begin
len := Length(oldSubstr);
iStart := 1;
sb := TStringBuilder.Create;
try
repeat
idx := posX(oldSubstr, st, iStart);
if idx > 0 then
begin
sb.Append(Copy(st, iStart, idx - iStart));
sb.Append(newSubStr);
iStart := idx + len;
end;
until idx <= 0;
sb.Append(Copy(st, iStart, length(st)));
Result := sb.ToString;
finally
sb.Free;
end;
end;
EPX是利用基于Pascal的FastScript语言作为基础语言,在其中增加了许多函数与特性的一个扩展,将EPX组件本身融入到语言中去,使其能够更加灵活方便地运用EPX的所有功能,实现与EPX核心的友好交互。
欢迎加入【ePx Studio学习交流群】:113140060
https://jq.qq.com/?_wv=1027&k=5MYPTFX
欢迎加入【ePx Studio学习交流群】:113140060
https://jq.qq.com/?_wv=1027&k=5MYPTFX

浙公网安备 33010602011771号