[英]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.