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

delphi:在编写文本文件时,替换字符串中的换行符,该字符串由varchar2字段(oracle)填充,delphi,replace,line-breaks,Delphi,Replace,Line Breaks,我正在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] := ' '; e

我正在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}”

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

“1)流动资金的流动性:“#$A”-例如,在澳大利亚联邦储备银行(korrekten Ausweises der Forderungeng/Verbindlichkeiten)的流动性”

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

你有什么想法吗

问候,,
Dennis

首先使用
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;

美好的那很好用。谢谢。直到现在我才知道“AdjustLineBreaks”功能。
strText := AdjustLineBreaks(strText, tlbsCRLF);
strText := AnsiReplaceStr(strText, #13#10, '{\n}');
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;