Angular中如何将剪贴板多行数据转为指定结构数组?
问题:Angular中处理剪贴板多行文本转换为指定结构数组
在Angular项目中,通过以下函数获取剪贴板数据:
onPasteData(section:string){ navigator.clipboard.readText().then(s => input = s ); }
获取到的剪贴板文本包含空行:
Tony USA addtionline3
希望将其转换为指定结构的数组:
let finalArray = [{ "Name" : "Tony", "Country" : "USA", "Additional" : "addtionline3" }]
尝试使用split方法处理:
const lines = input.split(/\r?\n/).filter(line => line.trim() !== '');
但未得到预期结果,如何解决?
解决方案
你的split+filter代码已经正确过滤掉了空行,得到了有效内容的数组["Tony", "USA", "addtionline3"],问题出在后续没有将这个数组映射为目标结构。
修改后的完整代码如下:
onPasteData(section:string){ navigator.clipboard.readText().then(s => { // 拆分文本并过滤空行 const lines = s.split(/\r?\n/).filter(line => line.trim() !== ''); // 转换为目标结构数组 const finalArray = [{ Name: lines[0], Country: lines[1], Additional: lines[2] }]; // 后续可对finalArray进行业务处理 console.log(finalArray); }); }
边界情况处理(可选)
如果需要兼容剪贴板内容行数不足3行的情况,可以增加格式校验:
onPasteData(section:string){ navigator.clipboard.readText().then(s => { const lines = s.split(/\r?\n/).filter(line => line.trim() !== ''); if (lines.length >= 3) { const finalArray = [{ Name: lines[0], Country: lines[1], Additional: lines[2] }]; // 处理符合格式的数据 } else { // 提示用户剪贴板内容格式不符合要求 console.warn("剪贴板内容格式不正确,请检查后重试"); } }); }
内容的提问来源于stack exchange,提问作者grabrep gg
相关产品推荐
相关产品推荐

