Delphi - разбить строку на строку
Примечание: я использую 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 ответа
Решение
Да, это то, что 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;