使用 StringList 解析文本:\n vs #13#10 vs sLineBreak

Parsing Text with StringList: \n vs #13#10 vs sLineBreak

我正在尝试用 TStringList:

解析字符串
  sl:=TStringList.Create;
  try
    sl.Text:=aString;
    FFirstRow:=sl[0];
    FSecondRow:=sl[1];
  finally
    sl.Free;
  end;

如果 aString:='aa'+#13#10+'bb'aString:='aa'+sLineBreak+'bb'FFirstRowaaFSecondRowbb。但是如果 aString:='aa\nbb'FFirstRow 得到整个字符串(并且没有第二行)。如何解析以 \n 作为分隔符的字符串?

我尝试了 sl.Delimiter:=Char(13)(和 sl.DelimitedText:=aString)。

2 字符序列 '\'+'n' 在 Delphi 中不被视为转义序列(仅在 C/C++ 中,并且仅在编译-时间文字,不在运行时数据中)。您将不得不手动替换序列,例如 StringReplace(),例如:

aString := 'aa\nbb';
sl := TStringList.Create;
try
  sl.Text := StringReplace(aString, '\n', #10, [rfReplaceAll]);
  FFirstRow := sl[0];
  FSecondRow := sl[1];
finally
  sl.Free;
end;

您可以只更改 TStringList:

中被视为换行符的字符串
  sl := TStringList.Create;
  try
    sl.LineBreak := '\n';
    sl.Text := aString;
    FFirstRow := sl[0];
    FSecondRow := sl[1];
  finally
    sl.Free;
  end;