2016-08-18 63 views
0

在一个csv文件中,它们之间有一些空行,最后一行也是空白,我怎么能忽略它们或者让我们说,跳到下一个不空行?在javascript中,如何在上传csv文件时忽略空行?

column1;列2;第3栏

value1;值2;值3

__________________此行为空

value7; value8; value9

__________________this线(最后一个)是空

我获得文件内容:

var fileString = evt.target.result; 

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

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'); 
    } 
} 
+0

你问如何从字符串中删除空行?因为它必须以字符串形式提供给你,然后才能在Javascript中进行操作。或者你必须以缓冲的方式处理文件,并随时删除多余的行。 –

+0

准确地说,它可以作为字符串提供给我,我想要忽略它们或删除它们。我想导入一个CSV文件到我的网页,当我这样做时,可以看到所有的空行,甚至最后一个,我基本上不需要。 –

+0

为什么不在执行'fileString.split(“\ r \ n”)''之前删除额外的行*? –

回答

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可能会导致人类的长期战斗。

+0

嗯,我试过了,它不起作用:/中间和最后一行都没有被替换。 –

+0

@ C.R。您将不得不给我一些示例输入,因为,正如您所看到的,这适用于您描述的问题。 –

+0

不,你需要更微妙 - 1:用\ n替换\ r \ n - 2:用\ n替换\ n +(即:1或更多\ n):替换以\ n开头(正则表达式/^\ n/g)。 –

相关问题