如何将一个长的字符串分割成几个子串,分隔标志是回车符或换行符。
请指点,谢谢。
如有一字符串:str=‘sdfd[回车符]sdfefeer[回车符]sojoun[换行符]oiufnie ’分隔成:str1='sdfd[回车符]',str2='sdfefeer[回车符]',str3='sojoun[换行符]',str4='oiufnie'

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      Ls:TStringList;
    begin
      Ls:=TStringList.Create;
      try
        Ls.Delimiter:='\';
        Ls.DelimitedText:='113\54645\5465';
        ShowMessage(InttoStr(Ls.Count));
      finally
        Ls.Free;
      end;
    end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      Ls:TStringList;
    begin
      Ls:=TStringList.Create;
      try
        Ls.Delimiter:=#13;
        Ls.DelimitedText:='113'+#13+'54645'+#13+'5465';
        ShowMessage(InttoStr(Ls.Count));
      finally
        Ls.Free;
      end;
    end;
      

  3.   

    不太懂,怎么返回几个子串的值
    我的目的就是要从长字符串中得到几个子串。
    不想通过组件来实现。因为我的长字符串来自数据库
    几个子串作为treeview的child显示出来。
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      Ls:TStringList;
    begin
      Ls:=TStringList.Create;
      try
        Ls.Delimiter:=#13;
        Ls.DelimitedText:='daa'+#13+'wwerr'+#13+'wwweee';
        ShowMessage(InttoStr(Ls.Count));
            ShowMessage(ls.Strings[0]);
        ShowMessage(ls.Text);
      finally
        Ls.Free;
      end;
    end;
      

  5.   

    几个字符串都被分隔在Ls里了
    For I:=0 to Ls.Count-1 do
    begin
      Memo1.Lines.Add(Ls.Strings[I]);
    end;
      

  6.   

    if str := 'aaa/bb cc/ddd' then 
       if use TStringList set Delimiter='/' will get
        .String[0] = aaa
        .String[1] = bb
        .string[3] = cc
        .string[4] = dddbut it is not what i want to get?
      

  7.   

    利用TStringList类是比较方便的了,当然你不喜欢也可以自已写代码解析出来呀。贴一个给你参考://将字符串按指定分隔符分成字符串数组
    procedure StrDivideToArr(AText: string; Delimiter: string; var arrResult: array of string);
    var
      k, j, lastpos: integer;
    begin
      k := low(arrResult);
      lastpos := 1;
      for j := 1 to length(AText) do
        if AText[j] = Delimiter then
        begin
          arrResult[k] := Copy(AText, lastpos, j - lastpos);
          lastpos := j + 1;
          k := k + 1;
        end;
      arrResult[k] := Copy(AText, lastpos, length(AText) + 1 - lastpos);
    end;