2016-08-18 75 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)。 –