我有一个字符串分别用{D},{P},{B},{N}作为分隔符,一个字符串内分隔符的个数,位置都不固定,例如:应拉开{D}{P}二次开关{N}组,或者应拉开{D}{P}二次开关{N}组{D}等,请问怎样把字符串按照分割符分开,
例如:应拉开{D}{P}二次开关{N}组{D}分解为:应拉开,{D},{P},二次开关,{N},组,{D}的形式?

解决方案 »

  1.   


    I:=pos('{', str);
    j:=Pos('}', str);
    i, j 中就有一對了, 然後, 一個一個處理過去就是了!
      

  2.   

    好像delphi有内置的分割字符串的函数,但是忘了
      

  3.   

    var
      str:string;
      i:integer;
      newstr:string;
    begin
      str:='应拉开{D}{P}二次开关{N}组{D}'; 
      i:=0;
      while not length(str) do
      begin
        i:=pos('{',str);
        if i=0 then begin listbox.items.add(str);break;end;
        newstr:=copy(str,1,i-1);    
        listbox.items.add(newstr)//我用一个listbox来显示子串
        listbox.items.add(copy(str,i,3));
        str:=copy(str,i+3,(length(str)-i-2));
      end;
    end;
      

  4.   

    //参考如下代码~~
    var
      S: string;
    begin
      S := '应拉开{D}{P}二次开关{N}组{D}';
      S := StringReplace(S, '{', ',{', [rfReplaceAll]);
      S := StringReplace(S, '}', '},', [rfReplaceAll]);
      S := StringReplace(S, ',,', ',', [rfReplaceAll]);
      if (S <> '') and (S[1] = ',') then Delete(S, 1, 1);
      if (S <> '') and (S[Length(S)] = ',') then Delete(S, Length(S), 1);
      Caption := S; //显示
    end;
      

  5.   

    看不懂,也许可以用var
      ss: TStringList;ss:= TStringList.create;
      ss.delimer:='d';
      ss.sellimertext:='           ';等