delphi: 在写入文本文件时替换字符串中的换行符,该字符串由 varchar2 字段 (oracle) 填充

delphi: replace line breaks in a string, which is filled out of an varchar2 field (oracle), while writing a textfile

我正在 oracle 数据库上执行 sql 语句并将结果写入文本文件。名为 "targets" (varchar2) 的字段中有换行符。

直到现在我都这样替换了换行符:

function CleanText(strText : String) : String;
var
  ii: integer;
begin
  for ii := 1 to Length(strText) do
    if strText[ii] < chr(32) then strText[ii] := ' ';
  end;

  Result := strText;
end;

但现在我想用特定字符串替换换行符:“{\n}”。我尝试了不同的方法,例如:

strText := AnsiReplaceStr(strText, #13#10, '{\n}');

但是没用。写入的文本文件中没有"{\n}"。

我从 sql 语句中复制粘贴了一个示例字符串:

"1) Sicherung der Liquidität der Stadt XYZ durch:'#$A'- exakte Buchführung zur Sicherung des korrekten Ausweises der Forderungen / Verbindlichkeiten"

我可以这样做(但我认为,这不是一个好的解决方案):

strText := AnsiReplaceStr(strText, '''#$A''', '{\n}');

你有什么想法吗?

此致, 丹尼斯

先用SysUtils.AdjustLineBreaks规范换行符:

strText := AdjustLineBreaks(strText, tlbsCRLF);
strText := AnsiReplaceStr(strText, #13#10, '{\n}');

另一种选择是使用 TStringList 及其 LineBreak 属性:

function CleanText(strText : String) : String;
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  try
    sl.Text := strText;
    sl.LineBreak := '{\n}';
    Result := sl.Text;
  finally
    sl.Free;
  end;
end;