比如: 123|456|789|||45789
我要取出45789,但是它的位置不是固定的,因此只能从第5个"|"之后开始取,不知道如何获取第5个"|"的位置呢?  请大侠们赐教!!!

解决方案 »

  1.   

    var
      p1,p2:pchar;
      s:string;
      s1:string;
    begin
      s:='123|456|789|||45789';
      p1:=pchar(s);
      p2:=AnsiStrRScan(p1,'|');
      s1:=p2;  
    //结果为|45789,其余你自己解决啦
    end;
      

  2.   

    //参考如下代码~~
    begin
      with TStringList.Create do try
        Delimiter := '|';
        DelimitedText := '123|456|789|||45789';
        if Count >= 5 then ShowMessage(Strings[5]);
      finally
        Free;
      end;
    end;
      

  3.   

    给你一个函数
    function GetBlockStr(s:String;n:integer;BlockChar:char):String;
    var loc:integer;
    begin
      Loc:=pos(BlockChar,s);
      if Loc=0 then
        if n=1 then Result:=s else Result:=''
      else
        if n=1 then
          Result:=Copy(s,1,loc-1)
        else
          Result:=GetBlockStr(copy(s,loc+1,length(s)-loc),n-1,BlockChar);
    end;然后使用
    GetBlockStr('123|456|789|||45789',6,'|') 就可以得到你想要的结果了. :) 很好用的.