我正在尝试将数据拆分为csv文件以在我的脚本中使用。我通常用换行符拆分数据,然后用逗号分隔该行。
像这样: var i;
var fileData = [];
var id = 'csv file';
var file = DriveApp.getFileById(id).getAs('text/plain').getDataAsString();
var newline = dataFile.split('\n');
for(i in newLine){
var splitLine = newline[i].split(',');
fileData.push(splitLine);
};
将csv拆分为数组效果很好。我现在发现它不适用于单元格中引用的换行符或逗号。
我通常处理像'value1,value2 \ n value3,value4'这样的csv数据。现在我有一个csv文件,其数据类似于“value1 \ nvalue1”,value2 \ n value3,value4'。
我找到了一种分割数据的正则表达方式。 str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
here
我把它添加到'\ n'这样的话。 var newline = dataFile.split("\n(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
现在它有效,但速度很慢。我对正则表达式一无所知,有没有办法编辑这个正则表达式分割以更快地工作?我想要做的就是忽略双引号中的换行符。
修改
这不能回答这个问题,如何让正则表达式分裂更快,但我找到了一个解决方法来处理我的特定数据。
我的数据在换行符之前有空格,所以在它之前会有一个逗号“,\ n”,但引号中的换行符之间有两个单词,没有逗号。 “价值\ n值”。对此,我写了这样的分裂。
var newline = dataFile.split(',\n')
只拆分我想要的线条。这比我的正则表达式要快得多,但它对所有数据都不起作用,所以我不认为它是我的问题的答案。我将使用它来代替更好的解决方案。