zoukankan      html  css  js  c++  java
  • 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;
    

      

  • 相关阅读:
    为 Jenkins 配置 .NET 持续集成环境
    树莓派连接GPS模块
    杂记
    大型网站架构系列:电商网站架构案例
    我的心博客。
    555555555555111
    powershell 环境变量只有当前会话起作用问题
    powershell 下独立silent 安装 浏览器问题
    python编码格式
    scss教程推荐
  • 原文地址:https://www.cnblogs.com/xenli/p/13812750.html
Copyright © 2011-2022 走看看