You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Delphi Sydney 10.4中正确拆分逗号分隔的文本?

错误根源
  • Delphi的String.Split原生方法返回值类型为TArray<string>(泛型字符串动态数组),你声明的txtArray : array of String是非泛型自定义动态数组,两者在Delphi语法中属于不兼容类型,无法直接赋值,因此触发类型不匹配报错。
推荐解决方案(改动最小)

直接调整txtArray的变量声明,同时可以省略单独定义分隔符数组的冗余代码,完整实现如下:

  1. 修改变量声明:
// 调整后的变量声明,不需要单独声明charArray
txtToParse : String;
txtArray : TArray<string>; // 将原array of String改为TArray<string>
  1. 拆分代码直接写为:
txtArray := txtToParse.Split(['.', ',', '!'], TStringSplitOptions.ExcludeEmpty);

上述代码可以直接实现你原有需求,按.、,、!三个符号拆分字符串,且自动排除空结果。

备选方案(保留原有txtArray声明不变)

如果业务逻辑需要保留txtArray : array of String的原有声明,可以通过数组拷贝实现转换:

var
  tempSplitResult: TArray<string>;
  i: Integer;
begin
  // 先拿到Split的泛型数组结果
  tempSplitResult := txtToParse.Split(['.', ',', '!'], TStringSplitOptions.ExcludeEmpty);
  // 给自定义动态数组分配长度
  SetLength(txtArray, Length(tempSplitResult));
  // 逐元素拷贝
  for i := 0 to High(tempSplitResult) do
    txtArray[i] := tempSplitResult[i];
end;

内容的提问来源于stack exchange,提问作者rubidex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 06:57:04