簡體   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