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 字符串查找替换函数 转的更多相关文章

  1. java中String字符串的替换函数:replace与replaceAll的区别

    例如有如下x的字符串 String x = "[kllkklk\\kk\\kllkk]";要将里面的“kk”替换为++,可以使用两种方法得到相同的结果 replace(CharSe ...

  2. PHP 字符串正则替换函数preg_replace使用说明

    1. preg_replace() $msg = preg_replace("/<style>.+<\/style>/is", "", ...

  3. php字符串常用处理函数(数组的拆分、查找替换)

    //字符串常用函数    $a = "hello";    echo strlen($a); //输出字符串的长度        $b = "Hello";   ...

  4. Oracle内置函数:时间函数,转换函数,字符串函数,数值函数,替换函数

    dual单行单列的隐藏表,看不见 但是可以用,经常用来调内置函数.不用新建表 时间函数 sysdate 系统当前时间 add_months 作用:对日期的月份进行加减 写法:add_months(日期 ...

  5. php中几个字符串替换函数详解

    在php中字符替换函数有几个如有:str_replace.substr_replace.preg_replace.preg_split.str_split等函数,下面我来给大家总结介绍介绍. 一.st ...

  6. JavaScript字符串插入、删除、替换函数

    JavaScript字符串插入.删除.替换函数 说明: 以下函数中前两个函数取出查找字符串的前一部分和后一部分,以用于其他函数.注意,调用一次 replaceString(mainStr,search ...

  7. delphi字符串函数大全

    转帖:delphi字符串函数大全 2009-11-17 16:43:55 分类: delphi字符串函数大全 ━━━━━━━━━━━━━━━━━━━━━首部 function StringToGUID ...

  8. Delphi字符串处理函数

    1.Copy 功能说明:该函数用于从字符串中复制指定范围中的字符.该函数有3个参数.第一个参数是数据源(即被复制的字符串),第二个参数是从字符串某一处开始复制,第三个参数是要复制字符串的长度(即个数) ...

  9. string类自定义字符串替换函数replace

    #include <iostream> #include <string> using namespace std; /* *  函数功能:将string字符串中的某些字符替换 ...

随机推荐

  1. PAT (Advanced Level) 1040. Longest Symmetric String (25)

    暴力. #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ]; ...

  2. 各种命令,以及FAQ..持续更新.....

    Linux 篇: CentOs 7 修改主机名 hostnamectl --static set-hostname <host-name> 统计最多的10条记录 awk '{print $ ...

  3. 数据库建表的时候报 “1215 Cannot add foreign key constraint”

    很大原因是因为: 引用表中的字段类型和被引用的主键的类型不统一. 比如说学生表中有一个班级ID字段引用班级表. 班级表的ID是int类型,学生表中的班级ID是Varchar类型. 肯定会提示上述121 ...

  4. Android音频系统之AudioFlinger(一)

    1.1 AudioFlinger 在上面的框架图中,我们可以看到AudioFlinger(下面简称AF)是整个音频系统的核心与难点.作为Android系统中的音频中枢,它同时也是一个系统服务,启到承上 ...

  5. Fragmen和Activity之间的通信--接口和实现的分离(转)

    Fragmen和Activity之间的通信--接口和实现的分离(转) 分类: Android平台     在平板的开发过程中通常都会采用多个Fragment的实现方式,通常有一个为list的Fragm ...

  6. 说说Android应用的persistent属性

    转载地址:http://my.oschina.net/youranhongcha/blog 摘要 在Android系统中,有一种永久性应用.它们对应的AndroidManifest.xml文件里,会将 ...

  7. windows矢量字体点阵数据的提取(转)

    源:windows矢量字体点阵数据的提取 问题参考:windows api 获取字库点阵的问题 1.提取原理 在windows系统当中提取矢量字体的字模有很多方法,下面介绍一种利用GetGlyphOu ...

  8. 笔记:利用 Cocos2dx 3.2 与 Box2D制作一个跑酷游戏(上)

    最近写lua写得没有力气了,所以想让脑袋放松一下,刚好看到有人在用swift做游戏: Swift游戏实战-跑酷熊猫 于是脑子一短路,就想到了利用这些素材来做一个游戏. 本来不想记笔记的,但是由于选择物 ...

  9. asp.net 输出Excel

    private void lbtExportToExcel_Click(object sender, EventArgs e) { string strdate = DateTime.Now.Mont ...

  10. mysql之SQL---存储过程

    1.存储过程简介  我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用 ...