我正在嘗試決議用戶從 excel 檔案中粘貼的資料。你的代碼看起來像這樣:
onPastingContacts(e) {
const pastedData = e.clipboardData.getData('Text');
const allPastedFields = pastedData.split('\n').filter(el => el !== '');
allPastedFields.forEach(el => {
const field = el.split('\t');
let element = {
'field1': field[0]?.replace(/\r/g, ''),
'field2': field[1]?.replace(/\r/g, ''),
'field3': field[2]?.replace(/\r/g, ''),
'field4': field[3]?.replace(/\r/g, ''),
'field5': field[4]?.replace(/\r/g, ''),
'field6': field[5]?.replace(/\r/g, '')
};
Object.keys(element).forEach((key) => (element[key] == null) && delete element[key]); // remove empty fields from object
Data.push(element)
});
return {Data}
},
它通常運行良好,問題是如果檔案包含帶有 '\n' 或 '\t' 的文本,它會將其決議為檔案中的新行(或者如果它是 \ta 新單元格)。
例如,如果我試圖粘貼這個檔案:

如果我列印粘貼的資料,它看起來像這樣:
523961234 "This is an example with new line "
如果我列印 Data 陣列,它看起來像這樣:
[{field1: '523961234', field2: 'This is an example'},
{field1: 'with new line '}]
我需要這將是結果:
[{field1: '523961234', field2: 'This is an example \n with new line '}]
我知道它為什么是 append ,有沒有人知道我如何以它的作業方式進行決議?
uj5u.com熱心網友回復:
您可以做的是在引號之間的任何地方洗掉新行。您可以使用此 RegEx/\n (?=(?:(?!\"|\").)*\")/gs來查找這些新行。所以線
onPastingContacts(e) {
const pastedData = e.clipboardData.getData('Text');
const regEx = /\n (?=(?:(?!\"|\").)*\")/gs;
const allPastedFields = pastedData.replaceAll(regEx, " ").split('\n').filter(el => el !== '');
// Rest of your code here.
}
注意:如果您需要在每個欄位中保留 newLines,您可以將 newLines 替換為占位符 - Example .replaceAll(regEx,'{NEW_LINE}')。然后,當您決議該欄位時,您可以將其替換為新行 - Example .replaceAll('{NEW_LINE}', '\n')。
原始 RegEx 靈感在這里。
uj5u.com熱心網友回復:
我按 '\r\n' 分開。這對我有用。單元格內的新行只是 \n 。這是我的代碼:
onPastingContacts(e) {
const pastedData = e.clipboardData.getData('Text');
const allPastedFields = pastedData.split('\r\n').filter(el => el !== '');
allPastedFields.forEach(el => {
const field = el.split('\t');
let element = {
'field1': field[0]?.replace(/\r/g, ''),
'field2': field[1]?.replace(/\r/g, ''),
'field3': field[2]?.replace(/\r/g, ''),
'field4': field[3]?.replace(/\r/g, ''),
'field5': field[4]?.replace(/\r/g, ''),
'field6': field[5]?.replace(/\r/g, '')
};
Object.keys(element).forEach((key) => (element[key] == null) && delete element[key]); // remove empty fields from object
Data.push(element)
});
return {Data}
},
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/436494.html
標籤:javascript 擅长 Vue.js 解析 剪贴板
上一篇:在p-tag中查找包含帶有beautifulsoup的span-tag的文本
下一篇:如何獲取組中的元素?Python
