gpt4 book ai didi

delphi - 当指定为 Replacement 时,为什么 TPerlRegEx 无法正确处理回车换行符 (CR LF)

转载 作者:行者123 更新时间:2023-12-03 14:50:39 26 4
gpt4 key购买 nike

我尝试使用 TPerlRegEx 类用新行替换空格。

with RegExp do
begin
Subject:=Memo1.Lines.Text;
RegEx:=' ';
Replacement:='\r\n';
ReplaceAll;
Memo1.Lines.Text:=Subject;
end;

问题在于它将\r\n 替换视为文字文本。

最佳答案

使用#13#10

program Project29;

{$APPTYPE CONSOLE}

uses
SysUtils, PerlRegEx;

var RegEx: TPerlRegEx;

function CStyleEscapes(const InputText:string):string;
var i,j: Integer;

begin
SetLength(Result, Length(InputText));
i := 1; // input cursor
j := 1; // output cursor
while i <= Length(InputText) do
if InputText[i] = '\' then
if i = Length(InputText) then
begin
// Eroneous quotation...
Result[j] := '\';
Inc(i);
Inc(j);
end
else
begin
case InputText[i+1] of
'r', 'R': Result[j] := #13;
'n', 'N': Result[j] := #10;
't', 'T': Result[j] := #9;
'\':
begin
Result[j] := '\';
Inc(j);
Result[j] := '\';
end;
else
begin
Result[j] := '\';
Inc(j);
Result[j] := InputText[i+1];
end;
end;
Inc(i,2);
Inc(j);
end
else
begin
Result[j] := InputText[i];
Inc(i);
Inc(j);
end;
SetLength(Result, j-1);
end;

begin
RegEx := TPerlRegEx.Create;
try

RegEx.RegEx := ' ';
RegEx.Replacement := CStyleEscapes('\t\t\t');;
RegEx.Subject := 'FirstLine SecondLine';
RegEx.ReplaceAll;
WriteLn(RegEx.Subject);

ReadLn;

finally RegEx.Free;
end;
end.

关于delphi - 当指定为 Replacement 时,为什么 TPerlRegEx 无法正确处理回车换行符 (CR LF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14183692/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com