TStringList.CommaText中空格的问题

使用TStringList的CommaText属性解析CSV文件时,遇到字符串中的空格会被错误地转换为新行。通过设置StrictDelimiter属性为True,可以确保只以逗号作为分隔符,避免因空格导致的解析错误。此解决方案适用于Delphi 2006及以上版本,因为StrictDelimiter属性在D2006中引入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用TStringList的CommaText属性解析CSV文件非常的方便,可是如果字符串中有空格,会被像逗号一样转成新行。比如:

Your Company Name,Test

上面的字符应该被解析成两行,但CommaText默认会解析成:

Your

Company

Name

Test


上网查了一下,有人说可以替换空格为特殊字符,解析完再替换回来,还有的说是VCL代码有问题,要修改TStringlist的源代码。仔细想想,真的要这么麻烦吗?其实TStringList有一个属性设置下就好了

StrictDelimiter := True;


帮助上是这么说的:

Determines how the Delimiter property is used.

Use this property to specify whether the Delimiter is the only value used within the DelimitedText property. If set to True, individual strings in DelimitedText are separated only by the character that is the value of Delimiter. If set to False, individual strings in DelimitedText can be separated by a space, a non-printable character, or the character that is the value of Delimiter.


注意,这个新属性是D2006版本中才引入的,严格说来并不是bug,因为CSV文件并没有工业标准,只能常用的实践为依据


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值