我正在寻找处理来自Google表格,Excel和纯HTML表的数据的功能。
我在粘贴事件上使用clipboard data来获取剪贴板的内容。
var clipText = event.clipboardData.getData('text/plain');
尽管我不太确定如何处理数据以及使用哪些符号来分隔行和列。理想情况下,我希望有一个行数组和一个列数组。
Holidays taken in the last six months
ID Name July August September October November December
215 Abel 5 2 0 0 0 3
231 Annette 0 5 3 0 0 6
173 Bernard 2 0 0 5 0 0
141 Gerald 0 10 0 0 0 8
99 Michael 8 8 8 8 0 4
例如从HTML生成的纯文本就是这种格式的结果,有些单元格用3个空格分隔,有些用2个空格分隔(Gerald 10-> 0)
我想要的结果:
[
[ID, Name, July, August, September, October, November, December],
[215, Abel, 5, 2, 0, 0, 0, 3],
[231, Annette, 5, 3, 0, 0, 0, 3]
...
]
是否有任何特殊字符可用于中断/分隔剪贴板中的表格数据?
答案 0 :(得分:0)
如果要连续用两个或多个空格定界,可以使用正则表达式来做到这一点:
const clipText = event.clipboardData.getData('text/plain')
const splitByLines = clipText.split(/\r\n|\n|\r/g, clipText) // Split lines for Windows (\r\n) or Linux/OSX (\n). See note below...
const splitBySpaces = splitByLines.forEach(line => line.split(/\s{2,}/g)) // Split each line everywhere there are 2 or more spaces in a row
如果您要支持Unicode输入或某些真正晦涩的系统,则应查看ECMA认为什么是“行尾”字符:https://www.ecma-international.org/ecma-262/10.0/#sec-line-terminators