delphi 字符串查找替换函数

2022-11-25 10:53:19 作者:admin

本文整理自网络,侵删。

 1.提取字符串中指定子字符串前的字符串  Function Before( Src:string ; S:string ): string ;  Var    F: Word ;  begin    F:= POS(Src,S) ;    if F=0 then      Before := S     else      Before := COPY(S,1,F-1) ;  end ;  eg: Before('123','helloworld_123')  返回结果:helloworld_  2.       提取字符串中指定子字符串后的字符串  function After(Src: string; S: string):string;  var    F: Word;  begin    F:= Pos(Src, S);    if F = 0 then      After:= ''    else      After:= Copy(S, F+Length(Src), Length(S));  end;3.Delphi 替换函数  procedure replace(var s:string;const SourceChar:pchar;const RChar:pchar);  //第一个参数是原串,第二个是模式串,第三个是替换串  var    ta,i,j:integer;    m,n,pn,sn:integer;    SLen,SCLen,RCLen:integer;//SLen表示原串的长度,SCLen表示模式传的长度,RCLen表示替换串的长度    IsSame:integer;    newp:array of char;//用来保存替换后的字符数组  begin    SLen:=strlen(pchar(s));SCLen:=strlen(SourceChar);RCLen:=strlen(RChar);    j:=pos(string(SourceChar),s);    s:=s+chr(0);ta:=0;i:=j;    while s[i]<>chr(0) do //这个循环用ta统计模式串在原串中出现的次数    begin      n:=0;IsSame:=1;    for m:=i to i+SCLen-1 do      begin        if m>SLen then begin          IsSame:=0;break;        end;        if s[m]<>sourceChar[n] then begin          IsSame:=0;break;        end;        n:=n+1;      end;      if IsSame=1 then begin        ta:=ta+1;i:=m;      end      else        i:=i+1;    end;    if j>0 then    begin      pn:=0;sn:=1;      setlength(newp,SLen-ta*SCLen+ta*RCLen+1);//分配newp的长度,+1表示后面还有一个#0结束符      while s[sn]<>chr(0) do //主要循环,开始替换      begin        n:=0;IsSame:=1;        for m:=sn to sn+SCLen-1 do //比较子串是否和模式串相同        begin          if m>SLen then begin IsSame:=0;break; end;          if s[m]<>sourceChar[n] then begin IsSame:=0;break; end;          n:=n+1;        end;        if IsSame=1 then//相同        begin          for m:=0 to RCLen-1 do          begin            newp[pn]:=RChar[m];pn:=pn+1;          end;          sn:=sn+SCLen;        end        else        begin //不同          newp[pn]:=s[sn];          pn:=pn+1;sn:=sn+1;        end;      end;      newp[pn]:=#0;      s:=string(newp); //重置s,替换完成!    end;  end;4.Delphi StringReplace() 替换字符串的用法  str:= '{"UserName":"helloworld","UserPass":"helloworld_123","UserEmail":"lovecode@163.com"}';  str:= StringReplace(str,'"','\"',[rfReplaceAll]);  StringReplace(源字符串,'被替换字符','替换后字符',[rfReplaceAll]);  5.       查找字符串中指定字符及字符串最后一次出现的位置  function RightPosEx(const Substr,S: string): Integer;  var    iPos: Integer;    TmpStr: string;    i,j,len: Integer;    PCharS,PCharSub: PChar;  begin    PCharS:=PChar(s); //将字符串转化为PChar格式     PCharSub:=PChar(Substr);    Result:=0;    len:=length(Substr);    for i:=0 to length(S)-1 do begin      for j:=0 to len-1 do begin        if PCharS[i+j]<>PCharSub[j] then break;      end;      if j=len then Result:=i+1;    end;  end;调用方式:RightPosEx(‘\’,’123456\7\’);

相关阅读 >>

Delphi application.processmessages

strpcopy 将字符串复制到字符数组中

Delphi fmx使用 timage 显示动画图片

Delphi中输入框不能输入初数字意外的字符串的函数(isnumeric)

Delphi根据进程名强制关闭进程

Delphi 计算运行耗时的方法1

Delphi idhttp控件学习(图片下载)

Delphi 如何删除动态数组的指定元素

高手谈做程序员的8大基本原则

Delphi strutils.leftstr、strutils.rightstr - 提取左右字符串

更多相关阅读请进入《Delphi》频道 >>



在线咨询 拨打电话