Csv:搜索String并替换为另一个字符串

时间:2015-10-26 20:15:02

标签: java csv

我有一个包含以下内容的.csv文件:

 scenario, custom,    master_data
 1,        ${CUSTOM},  A_1

我有一个字符串:

 a, b, c

我想用'a,b,c'替换'custom'。我该怎么做并保存到现有的.csv文件?

3 个答案:

答案 0 :(得分:0)

最简单的方法可能是读取一个文件并输出到另一个文件,然后按行进行修改

您可以尝试使用标记器,这可能不完全正确输出/输入,但您可以将其调整为CSV文件格式

argv

如果这是一次性的事情,它还有一个好处就是不必研究正则表达式(这是非常强大和有用的,很高兴知道,但可能是为了以后的日期?)

答案 1 :(得分:0)

查看Can you recommend a Java library for reading (and possibly writing) CSV files?

读取值后,搜索以${开头并以}结尾的字符串/值。像\$\{(\w)\}一样使用Java Regular Expressions。然后使用一些地图查找找到的密钥和相关值。 Java Properties将是一个很好的候选人。

然后编写一个新的csv文件。

答案 2 :(得分:0)

由于您的替换字符串非常独特,因此只需将文件读入缓冲区,然后将该缓冲区转换为字符串即可快速完成,无需复杂的解析。将要替换的所有文本替换为目标文本。然后将字符串转换为缓冲区并将其写回文件...

Pattern.quote是必需的,因为您的字符串是正则表达式。如果你不引用它,你可能会遇到意想不到的结果。

同样,覆盖源文件通常也不聪明。最好是创建一个新文件,然后删除旧文件并将新文件重命名为旧文件。中途的任何错误都不会删除您的所有数据。

final Path yourPath = Paths.get("Your path");
byte[] buff = Files.readAllBytes(yourPath);
String s = new String(buff, Charset.defaultCharset());
s = s.replaceAll(Pattern.quote("${CUSTOM}"), "a, b, c");
Files.write(yourPath, s.getBytes());