使用临时标志进行字符串操作是一种不好的做法吗?

问题描述 投票:0回答:1

我正在处理许多具有许多不同格式的CSV文件,这些文件通常是由普通用户手工编写的,因此在字段内有很多;,\n\t等,这种类型的字符通常会在解析数据或生成新的CSV文件时引起麻烦,而且我通常会事先删除此类字符,但是今天我在一个旧程序中发现以下代码:

[它从resultSet读取数据并将每个值连接到String以形成一行,并处理分隔符(我们通常使用;),此代码首先使用了一个临时标志,例如#TempSeparator#划分每个字段,然后在行完成时应用replaceAll(";","")删除伪造的分隔符,然后再使用replaceAll("#TempSeparator#", ";")形成有效的行

我实际上认为这是避免对每个字段进行不必要的调用的聪明方法,并且只对整个行进行替换,但是我认为这样做不是最好甚至不是最优的方法。

这真的是不好的做法吗?

java string csv
1个回答
0
投票

这不是very不好,但这仍然不是最好的方法。在字段中使用特殊字符时,应将其转义,或者应将字段包装起来(通常用引号引起来)。

如果CSV已经格式错误,以至于特殊字符出现在字段中而没有适当的转义或换行,那么您的手上还有另一个问题,可以通过其他方式解决。只用临时占位符替换字符并不能解决该问题,因为占位符同样会出现在字段内部和字段之间。

© www.soinside.com 2019 - 2024. All rights reserved.