繁体   English   中英

使用JavaScript从CSV删除不可见的回车符

[英]Remove invisible carriage return from CSV using javascript

我尝试使用以下代码解析Google Apps脚本(Google表格)中的CSV:

var file = DriveApp.getFileById('xx');
var blobasstr = file.getBlob().getDataAsString();
var csvData = Utilities.parseCsv(blobasstr);

除了我的CSV单元格中存在不可见的回车符(这会导致在单元格中间创建多余的行)这一事实之外,所有其他方法都工作正常。 这些回车是源数据包含具有两条地址线的单元(并且回车在中间)的结果。 当我在记事本中打开CSV时,我必须输入两次光标才能越过这一点,这进一步加强了我的想法,即那里有一个隐藏的回车符。

我可以在我的blobasstr上使用正则表达式来删除这些看不见的回车符,但是当然可以在每行末尾保留通常的回车符吗?


编辑:感谢您提到前面的问题。 使用正则表达式:

blobasstr.replace(/(?=["'])(?:"[^"\\]*(?:\\[\s\S][^"\\]*)*"|'[^'\\]\r\n(?:\\[\s\S][^'\\]\r\n)*')/g, '\\r\\n');

我确实能够删除“隐藏的”回报,这是一个很好的开始。 问题是,我现在最终在带有不可见返回的单元格中以文本\\ r \\ n (而不是单元格的原始内容,这很可能是由替换参数'\\ r \\ n'引起的)为此,它可以保留单元格的原始内容(当然没有隐藏的回车符?),非常感谢!


非常感谢您的帮助!

克里斯

记事本期望dos行尾\\r\\n并且不处理unix行尾单\\n ,我可以使用\\n复制一个简单文件的行为,必须键入两次光标才能前进。

似乎Utilities.parseCsv无法处理多行单元格,因为无法指定诸如"的可选封闭字符。

这最终为我做了什么:

var blobasstr = blobasstr2.replace(/(?=["'])(?:"[^"\]*(?:\[\s\S][^"\]*)*"|'[^'\]\r\n(?:\[\s\S][^'\]\r\n)*')/g, function(match) { return match.replace(/\n/g,"")} );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM