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

从CSV读取字符串replaceAll替换\r\n失效,疑与fieldSet.readString有关?

问题:CSV读取字符串时换行替换失效?

我从CSV文件读取字符串的代码如下:

BenFeature = fieldSet.readString("ben_feature").replaceAll("\r\n","\n");

文件中ben_feature字段内容为"Testing \r\n working \r\n",期望输出是换行显示:

Testing
working
但实际输出仍保留\r\n。不过用模拟字符串测试时,这段代码能正常工作:

String testing = "Testing \r\n Working \r\n";
testing = testing.replaceAll("\r\n","\n");

请问是不是fieldSet.readString方法导致的问题?


分析与解决

大概率是fieldSet.readString的处理逻辑导致的问题——毕竟模拟字符串测试时replaceAll的逻辑完全正常,说明替换代码本身没问题。

可能的原因:

  • 从CSV读取时,fieldSet.readString对字段中的转义字符做了特殊处理,把文件里的\r\n转成了字面量的\r和\n字符的转义形式(也就是字符串实际存储的是\\r\\n,而非换行符本身)。这时候用"\r\n"去匹配自然找不到目标内容。

验证方法:
可以先打印读取后的BenFeature的字符详情,或者直接尝试用下面的代码替换:

BenFeature = fieldSet.readString("ben_feature").replaceAll("\\\\r\\\\n", "\n");

如果这样能正常替换,就说明确实是读取时转义了字面量的换行符。

解决思路:

  1. 查看fieldSet.readString的官方文档或源码,明确它对CSV中特殊字符(换行、转义符)的处理规则。
  2. 如果是转义导致的字面量问题,就用replaceAll("\\\\r\\\\n", "\n")做替换;或者用更通用的写法兼容所有换行格式:
BenFeature = fieldSet.readString("ben_feature").replaceAll("\\r?\\n", "\n");

这个写法会把单独的\r、\n以及\r\n都统一替换成\n。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:06:11