呵呵,请问一下各位有谁知道怎样从一个字符串中提示取指定的字符!
如有一定符串:"@100001@USERNAME@USERPASS@USERAGE@"
我要怎样才能把"@"号里面的字符提取并ShowMessage出来呀!还有就是怎样提取指定“@”里的字符呀,如果不行请问一下有什么解决方案没?

解决方案 »

  1.   

    var
      s:string;
      list:tstrings;
    begin
      list:=tstringlist.Create;
      s:='@100001@USERNAME@USERPASS@USERAGE@';
      list.Text:=stringreplace(s,'@',#13#10,[rfReplaceAll]);
      for i:=1 to list.Count-1 do
        showmessage(list[i]);                       
    end;
      

  2.   

    建个队列(或数组),对字符串里的字符逐个进行扫描,发现@就将之后的字符放到队列(数组)里去,直到出现下一个@,然后把提取到的字符串show出来就行了,想取第n个@就把第n次扫到的@后面的字符取出来就行了,如果字符串里每个@之间的长度和位置都是固定的话,那只要用chr()函数就可以了
      

  3.   

    呵呵!不好意思!小弟初识Delphi请帮帮忙把代码写出来好吗?
      

  4.   

    使用下面的函数,应该要uses strutils; 这个单元里有很多字符串操作的函数:function ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar; Strings: TStrings): Integer;
    例子:分割以 @ 隔开的字符串,保存到TStringList里面
    var
     TmpStrs: TStrings;
     Ret: Integer;
    begin
     TmpStrs:=TStringList.Create;
     try
      Ret:=ExtractStrings(['@'],[],'1098u@2x@3dk@45s',TmpStrs);
      if Ret>0 then Memo1.Lines:=TmpStrs
      else Memo1.Text:='Error';
     finally
      TmpStrs.Free;
     end; //end of try
    end;