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

标签 delphi split newline line-breaks delphi-2006

我在 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/

相关文章:

delphi - 从网络加载 png 图像 (delphi fmx)

Delphi - 预览表单上的 Rave 报告

sql - 将sql中的字符串拆分为所有字符

Shell 脚本在控制台中有效,但在保存为文本文件时无效

c# - 在设计时将换行符添加到标签的文本

types - 我可以在 Object Pascal 的类中定义类型吗?

delphi - 鼠标滚动时组合框项目列表 float 在表单上

arrays - ruby - 当值更改时将数组拆分为子数组并忽略/删除该值

arrays - Powershell-将字符串拆分为由开始和结束字符串描述的数组

javascript - 在 CKEditor 中添加 <p> 时删除不需要的换行符