如何从JSON中移除\r字符?代码处理后仍存在该问题
解决CSV处理中残留
\r字符的问题 你遇到的核心问题是:replace("\r", " ")默认只会替换第一个匹配到的\r字符,而你的数据里的\r可能存在于多个元素中(比如示例里的"20\r"),所以单次替换无法彻底清除。下面给你两种可靠的解决方案:
方案1:在数据处理阶段清理(推荐)
直接在拆分每一行的元素时,就把每个字段里的\r全部去掉,这样后续的数据本身就是干净的,避免后续使用数据时再出问题:
let res = e.target.result.split('\n').map(line => // 拆分每个字段后,对每个字段全局清除\r line.split(',').map(item => item.replace(/\r/g, '')) ); var myData = $("#dvCSV").text(JSON.stringify(res, null, ' ')); $("#dvCSV").append(myData);
方案2:在JSON字符串阶段全局替换
如果你更倾向于在转成JSON字符串后处理,只需要把原来的replace改成全局正则匹配即可,用/\r/g代替"\r":
let res = e.target.result.split('\n').map(line => line.split(',')); var myData = $("#dvCSV").text(JSON.stringify(res, null, ' ')); // 全局替换所有\r字符 myData = myData.replace(/\r/g, ''); $("#dvCSV").append(myData);
为什么方案1更好?
方案1是从数据源层面清理\r,后续如果需要使用res这个数组做其他操作(比如统计、渲染表格),数据本身已经没有多余的转义字符,不会引发其他潜在问题;而方案2只是修改了最终的字符串展示,原始的res数组里依然带有\r,如果后续复用数据可能会踩坑。
内容的提问来源于stack exchange,提问作者rob.m
相关产品推荐
相关产品推荐

