现在有这些121.8.124.42:1080@SOCKS4$0 字符串,想把他分别提取出来。

解决方案 »

  1.   

    var
     p1,p2,p3:integer;
     s,s1,s2,s3,s4:string;
    begin
     s :='121.8.124.42:1080@SOCKS4$0';
     p1:=pos(':',s);
     p2:=pos('@',s);
     p3:=pos('$',s);
     s1 := copy(s,1,p1 - 1);
     showmessage(s1);
     s2 := copy(s,p1+1,p2 - p1 -1);
     showmessage(s2);
     s3 := copy(s,p2+1,p3 - p2 - 1);
     showmessage(s3);
     s4 := copy(s,p3+1,length(s) - p3);
     showmessage(s4);
    end;
      

  2.   

    var
    //a1原字符串,a2为临时截取的字符串
    a1,a2: String;
    //m1.2.3分别为':','@','$'出现的位置
    m1,m2,m3:Integer;
    r1,r2,r3,r4: String;
    begin
     a1:='121.8.124.42:1080@SOCKS4$0';
     m1:=pos(':',a1);
     //得到121.8.124.42
     r1:=copy(a1,1,m1-1);
     //得到剩余字符串
     a2:=copy(a1,m1+1,len(a1-m1))
     m2:=pos('@',a2);
     //得到1080
     r2:=copy(a2,1,m2-1);
     //得到剩余字符串
     a2:=copy(a2,m2+1,len(a2-m2));
     m3:=pos('$',a2);
     //得到SOCKS4
     r3:=copy(a2,1,m3-1);
     //得到剩余字符串0
     a2:=copy(a2,m3+1,len(a2-m3));
    end;//因为回贴的机器没安装delphi,无法测试,你测测
      

  3.   

    哇塞,怎么就pos+copy呀,我不知道 是lz完全不会delphi呢?还是我们理解太简单了,貌似这个问题很简单呀,哎
      

  4.   

    把他分别提取出来 
    可以解释下怎么个分别提取?什么要求,什么规则?
    是这样嘛?var 
    p1,p2,p3:integer; 
    s,s1,s2,s3,s4:string; 
    begin 
    s :='121.8.124.42:1080@SOCKS4$0'; 
    p1:=pos(':',s); 
    p2:=pos('@',s); 
    p3:=pos('$',s); 
    s1 := copy(s,1,p1 - 1); 
    showmessage(s1); 
    s2 := copy(s,p1+1,p2 - p1 -1); 
    showmessage(s2); 
    s3 := copy(s,p2+1,p3 - p2 - 1); 
    showmessage(s3); 
    s4 := copy(s,p3+1,length(s) - p3); 
    showmessage(s4); 
    end;