如何在Delphi Sydney 10.4中正确拆分逗号分隔的文本?
错误根源
- Delphi的
String.Split原生方法返回值类型为TArray<string>(泛型字符串动态数组),你声明的txtArray : array of String是非泛型自定义动态数组,两者在Delphi语法中属于不兼容类型,无法直接赋值,因此触发类型不匹配报错。
推荐解决方案(改动最小)
直接调整txtArray的变量声明,同时可以省略单独定义分隔符数组的冗余代码,完整实现如下:
- 修改变量声明:
// 调整后的变量声明,不需要单独声明charArray txtToParse : String; txtArray : TArray<string>; // 将原array of String改为TArray<string>
- 拆分代码直接写为:
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
相关产品推荐
相关产品推荐

