【问题标题】:In javascript, how can I ignore blank lines while uploading a csv file?在 javascript 中,如何在上传 csv 文件时忽略空白行?
【发布时间】:2016-08-18 15:32:09
【问题描述】:

在一个 csv 文件之间有一些空行并且最后一行也是空白的,我怎样才能忽略它们,或者说,跳转到下一个非空行?

第 1 列;第 2 列;第 3 列

值1;值2;价值3

__________________这一行是空的

值7;价值8;价值9

__________________这一行(最后一行)为空

我获取文件内容:

var fileString = evt.target.result; 

我这样做是为了分析每一行,然后将其显示在我的网站上:

var lines = fileString.split("\r\n"); 

是否有可能编写一个循环来检查空行并替换它们?像这样:

var pattern = /\r?\n\r?\n/g;

for(var i = 0; i < fileString.length; i++){
  if(lines === null){
     lines.replace(pattern, '\n');
  }
}

【问题讨论】:

  • 你在问如何从字符串中删除空行吗?因为它必须以字符串的形式提供给您,然后您才能在 Javascript 中对其进行操作。否则您必须以缓冲的方式处理文件并删除多余的行。
  • 确切地说,它可以作为字符串提供给我,我想忽略它们或删除它们。我想将一个 csv 文件导入我的网页,当我这样做时,可以看到所有空白行,甚至最后一行,我基本上不需要。
  • 为什么不删除多余的行之前fileString.split("\r\n")

标签: javascript csv blank-line


【解决方案1】:

如果行之间有一个空行,则表示一行中有两个行终止符。大多数情况下,这意味着您拥有\n\n,但在Windows 上,行终止符前面有一个回车符,表示\r\n\r\n。要摆脱空行,请将任何双终止符替换为单终止符。

var input = 'a,b,c\r\n' +
            'd,e,f\r\n' +
            '\n' +
            'g,h,i\n' +
            '\n';
var pattern = /\r?\n\r?\n/g;
console.log(input.replace(pattern, '\n'));

此正则表达式将匹配 \r\n 或仅匹配 \n\r? 表示 \r 的 0 或 1 个匹配项)然后使用全局标志 (g) 您可以在 replace 中的每个匹配项带有作为第二个参数传递的字符串的字符串 ('\n')。

警告:尝试destroy Terminators可能会导致人类的长期战斗。

【讨论】:

  • 嗯,我试过了,还是不行:/中间的那一行和最后一行都没有被替换。
  • @C.R.然后,您将不得不给我一些示例输入,因为如您所见,这适用于您描述的问题。
  • 不,你需要更微妙一点 - 1:将 \r\n 替换为 \n - 2:将 \n+(即:1 或更多 \n)替换为 \n - 3:用 null 替换以 \n (regex /^\n/g) 开头。
  • 对不起 - 我的意思是替换为“”(空白字符串)而不是 null。
  • @TonyDuffill 我不会说这更微妙。它也可以工作,但会更慢,因为你必须处理字符串两次。
猜你喜欢
  • 2012-01-15
  • 1970-01-01
  • 2016-10-20
  • 2016-09-14
  • 1970-01-01
  • 1970-01-01
  • 2017-05-13
  • 2015-10-09
  • 1970-01-01
相关资源
最近更新 更多