想问下各位大侠,若有一个字符串是:'234;23423;23423;456;5645RETE656'
包含多个‘;’我如何从字符串的尾部开始定位最后一个‘;’从而得到该‘;’前的所有字符。如上例中应得到'234;23423;23423;456;'

解决方案 »

  1.   

    你用数组循环一边,得到最后一个;的位置,然后用copy取得前面的字符。。或者你先把字符串倒叙,然后用POS取得第一个;的位置,然后用copy取得后面的字符。
      

  2.   

    用TStringList就可以了var sl:TStringList;
    begin
      sl:=TStringList.Create;
      sl.Delimiter:=';';
      sl.DelimitedText:='234;23423;23423;456;5645RETE656';
      sl.Strings[sl.Count-1]:='';
      ShowMessage(sl.DelimitedText);
      sl.Free;
    end;
      

  3.   

    也可以把你的字符放到memo中,memo中有一个属性,具体记不清楚了,设置这个属性,例如设置";",memo可以把字符串自动按照;分开,然后你只保留前面的就可以了。。具体的自己多试验吧。
      

  4.   

    memo的和楼上的从根本上说是一样的代码:var sl:TStringList;
    begin
      sl:=TStringList.Create;
      sl.Delimiter:=';';
      sl.DelimitedText:='234;23423;23423;456;5645RETE656';
      sl.Strings[sl.Count-1]:='';
      ShowMessage(sl.DelimitedText);
      sl.Free;
    end;
      

  5.   

    liangqingzhi(老之),前辈,我按你的方法做了, ShowMessage后可是得到想要的字符串,但是会出现提示EAccessViolation异常
      

  6.   

    会有EAccessViolation异常?,不知你是怎么用的,看看你的代码
      

  7.   

    放一个memo再上面,memo的名字叫sl,用下面代码,就可以了
      sl.Lines.delimiter:=';';
      sl.lines.DelimitedText:='234;23423;23423;456;5645RETE656';
      sl.lines.Strings[sl.lines.Count-1]:='';
      ShowMessage(sl.lines.DelimitedText);D7,winxp下测试通过。
      

  8.   

    liangqingzhi(老之),又试了一下,没有出现异常了~谢谢俩位了~你们的方法都可以了~~~~