例如:A串:A\B\C\D
      B串:AA\bb\cc\dd
     C串:AAA\bbb\ccc\ddd
有没有函数可以就把每个串最后一个 \后的内容提取出来  就是取D  cd   ddd
不想用类似于slpit  这样的功能。有没有哪个函数可以一句代码就可以取出来的?
                                                            

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      S1,S2 :string;
      I,J :integer;
    begin
      S1 := 'a\da\bc\de';
      I := PosEx('\',S1,1);
      J := I;
      while (J>0)  do
      begin
        J := PosEx('\',S1,I+1);
        if J>0 then I := J;
      end;
      S2 := RightStr(S1,Length(S1)-I);
      showmessage(S2);
    end;
    注意在Uses 加上单元 StrUtils
      

  2.   

    function  ssabc(sabc:string):string;
    var
      sss:string;
    begin
      sss:=sss+sabc+'\';
      Result:= sss;
    end;
    引用方式
      showmessage(pchar(ssabc('abc')+ssabc('cde')));这20分是我的了呀
      

  3.   

    引用方式
      ssabc('abc');
      这可是个万能的哟,想显示什么就什么的哟

    这20分是我的了呀
      

  4.   

    楼主要的是一句代码实现,你们都不合格,试试我的吧Uses StrUtils;const S:string='AAA\bbb\ccc\ddd';ShowMessage(RightStr(S,Pos('\',ReverseString(S))-1));
      

  5.   

    再给你提供一个方法,用LastDelimiterShowMessage(RightStr(S,Length(S)-LastDelimiter('\',S)));
      

  6.   

    kaikai_kk
    看到你的代码,我修改一下如下:
    function TForm1.ssabc01(sabc:string):string;
    var
      sss:string;
    begin
      sss:=RightStr(S,Pos('\',ReverseString(S))-1);
      Result:= sss;
    end;
    引用方式如下:
    ssabc01('AAA\bbb\ccc\ddd');这下子对了吧,接分中
      

  7.   

    showmessage(ExtractFileName('AAA\bbb\ccc\ddd'));手头没DELPHI,不知道直接用这个当路径来取能否得到ddd!鸟贵薪发的是啥子呀?
      

  8.   

    真奇怪了呀,6楼的帖子没有了呀
    function TForm1.ssabc01(sabc:string):string;
    var
      sss:string;
    begin
      sss:=RightStr(S,Pos('\',ReverseString(S))-1);
      Result:= sss;
    end;
    显示方式
      ShowMessage(ssabc01('AAA\bbb\ccc\ddd'));
      

  9.   

    好吧,大半的都来讨论这个小问题
    思路:先找出最后出现的分隔符号位置,然后截取;所以至少要用到2个函数1楼不符合题意
    小鸟你前面的是答非所问啊...嘿嘿
    7楼ExtractFileName方法,也是调用了LastDelimiter+Copy的方法,不过特殊符号要刚好是"\"才行我的就不分析,RightStr实际上就是Copy,而ReverseString用了指针与数组最后得出结果是:都在蛋痛,而楼主学会了多个方法
      

  10.   

    kaikai_kk
    呵呵,总结一下:
    #2楼 是以\分割字符串的
    #6楼 是分离出最后一个\之后的字符串全是“函数体”方式的

    楼主这20分真不好挣呀
      

  11.   

    kaikai_kk
    谢谢赐教,我知道如何处理了
      

  12.   

    反转字符串、copy然后再反转过来……
    怎么都这么手快啊……sgzhou12345
    (小蓝鸟贵薪)好那个啥,竟然写个函数……
      

  13.   

    我再补充一种办法,用数组,字符串可以按照位访问啊,当成数组就可以了。
    var
      s:string;
      i:integer;
    begin
       s:='aa\bb\cc\ddd';
       i:=length(s);
       while s[i]<>'\' do i:=i-1;
       showmessage(copy(s,i+1,length(s)));
    end;
      

  14.   

    var
    a,b,c:string;begin
       a:='aaaa\aaaa\aaaa\aaaa';
       b:='\';
       c:=copy(a,LastDelimiter(b,a)+1,length(a)-LastDelimiter(a,b));
       showmessage(c);
    end;