gpt4 book ai didi

德尔福 (2006) : how to Split by new line and break at the same time

转载 作者:行者123 更新时间:2023-12-02 18:49:18 25 4
gpt4 key购买 nike

我在 Java 中进行了这个简单的操作,其中字符串由换行符和换行符分割。

String i= "Holidays 

Great.
Bye";
String []linesArray = i.split("\\r?\\n");

我想在 Delphi 2006 中获得相同的结果。

使用以下步骤是否有效?

charArray[0] := '\\r';
charArray[1] := '\\n';

strArray := strA.Split(charArray);

最佳答案

我这样解释你的请求:“在 CR 和 LF 处分割字符串。”这意味着 CR+LF 给出一个空字符串元素。例如,'alpha'#13'beta'#10'gamma'#13#10'delta' 生成五个元素 'alpha''beta ''gamma''''delta'

如果是这样,并且您使用的是非古老版本的 Delphi,那么这非常简单:

var S := 'alpha'#13'beta'#10'gamma'#13#10'delta';

var Parts := S.Split([#13, #10]);
for var Part in Parts do
ShowMessage(Part);

对于旧的 Delphi 版本

上面的代码需要 TStringHelper(至关重要),并且还使用了内联变量声明、for in 循环和泛型。

对于旧的 Delphi 版本,您可以手动执行:

type
TStringArray = array of string;

function Split(const S: string): TStringArray;
var
Count: Integer;
const
Delta = 512;

procedure Add(const Part: string);
begin
if Length(Result) = Count then
SetLength(Result, Length(Result) + Delta);
Result[Count] := Part;
Inc(Count);
end;

var
p, i: Integer;

begin

Result := nil;
Count := 0;

p := 0; // previous delim
for i := 1 to Length(S) do
if S[i] in [#13, #10] then
begin
Add(Copy(S, Succ(p), i - p - 1));
p := i;
end;

Add(Copy(S, Succ(p)));

SetLength(Result, Count);

end;

procedure TForm1.FormCreate(Sender: TObject);
var
S: string;
Parts: TStringArray;
i: Integer;
begin

S := 'alpha'#13'beta'#10'gamma'#13#10'delta';

Parts := Split(S);
for i := 0 to High(Parts) do
ShowMessage(Parts[i]);

end;

关于德尔福 (2006) : how to Split by new line and break at the same time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67000545/

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