在一长段字符串中,如何取得2个特定字符串中的字符串比如:99999999Hello123123Bye,我想做一个函数,取得'Hello'和'Bye'之间的字符串'123123',能给点示例代码吗?谢谢。祝圣诞快乐!

解决方案 »

  1.   

    比如
    s := '99999999Hello123123Bye';
    s := Copy(s,14,19);
    Showmessage(s);
      

  2.   

    Pos
    LeftStr
    RightStr
    Length
    这四个函函数可以很方便的取
      

  3.   

    用pos定两次位,然后用 midStr或者copy取出都可以
      

  4.   

    var i,j : integer;
          s : string;//想取出其中的‘222’字符串i:=pos('AIS','111AIS222EFG');
    j:=pos('EFG','111AIS222EFG');
    s:=copy(s,i,j);
    showmessage(s);为什么 s 为空?
      

  5.   

    function GetSubString(aString,aFromStr,aToStr:String):String;
    var
      lBegin,lCount : integer;
      lSubString : String;
    begin
      if aString='' then exit;
      lBegin := Pos(aFromStr,aString)+Length(aFromStr);
      if aFromStr='' then lBegin := 1;
      lCount := Pos(aToStr,aString)-lBegin;
      if lCount <1 then lCount := length(aString)- lBegin+1;
      lSubString := Copy(aString,lBegin,lCount);
      result :=  lSubString;
    end;
      

  6.   

    procedure TForm1.BitBtn1Click(Sender: TObject);
    var
        i:integer;
        s:string;
    begin
        S:='99999999Hello123123Bye';
        i:=Pos('1',S);
        S:=MidStr(S,i,6);
        showmessage(S);
    end;
      

  7.   

    var i,j : integer;
          s : string;//想取出其中的‘222’字符串i:=pos('AIS','111AIS222EFG');
    j:=pos('EFG','111AIS222EFG');
    s:=copy(s,i,j);
    showmessage(s);应改为:var i,j : integer;
          s : string;//想取出其中的‘222’字符串i:=pos('AIS','111AIS222EFG');
    j:=pos('EFG','111AIS222EFG');
    s:=copy(s,i,j-i);
    showmessage(s);
      

  8.   

    TO:shang53(阿遙) 
    GetSubString(aString,aFromStr,aToStr:String):String;有些问题
    aString='111AISG'
    AFromStr='AIS'
    aToStr='ISG'
    结果是G,应该的结果''
    对aFromStr,aToStr重合或挨着的情况需要注意
    ---------
    aString='111AIS222fgG'
    AFromStr='fgG'
    aToStr='AIS'
    结果是'',应该是222
    对aFromStr在atoStr后面也要考虑
    -----------------
    对atoStr=''要考虑
    -------
    TO:cqpipilu(皮皮鲁) 
    你的s没有赋值