Delphi - 逐行拆分

时间:2012-12-02 08:31:10

标签: delphi delphi-7 line-breaks split

注意:我使用的是Delphi 7。

有没有办法用换行符拆分字符串?

我想要以下内容:

procedure Split
   (const Delimiter: Char;
    Input: string;
    const Strings: TStrings) ;
begin
   Assert(Assigned(Strings)) ;
   Strings.Clear;
   Strings.Delimiter := Delimiter;
   Strings.DelimitedText := Input;
end;

var
  xMSG:String;
  xStr:String;
  xStrList:TStrings;
  xLineBreak:String;
  xHello:String;
  xWorld:String;
begin
  xLineBreak := AnsiString(#13#10);
  xMSG := 'Hello ' + xLineBreak + 'World';
  xStrList := TStringList.Create;
  Split(xLineBreak,AnsiString(xMSG),xStrList);
  xHello := xStrList[0];
  xWorld := xStrList[1];
  MessageBox(0,PAnsiChar(xHello + xWorld),'Test',0);
end.

2 个答案:

答案 0 :(得分:7)

是的,这就是Text属性的作用。从帮助引用(Text属性(TStrings)):

  

将TStrings对象中的字符串列为单个字符串   由回车和换行符分隔的单个字符串。

由于它是一个班轮,您不需要额外的实用程序。

var
  xMSG:String;
//  xStr:String;
  xStrList:TStrings;
//  xLineBreak:String;
  xHello:String;
  xWorld:String;
begin
//  xLineBreak := AnsiString(#13#10);     // you don't need this, there's sLineBreak
  xMSG := 'Hello ' + sLineBreak + 'World';
  xStrList := TStringList.Create;

//  Split(xLineBreak,AnsiString(xMSG),xStrList);  
  xStrList.Text := xMSG;  // <--

  xHello := xStrList[0];
  xWorld := xStrList[1];
  xStrList.Free;
  MessageBox(0,PAnsiChar(xHello + xWorld),'Test',0);
end;

答案 1 :(得分:2)