如何使用 Javascript 正确拆分 CSV
How to properly split CSV using Javascript
我的 csv 文件是
1234567,AB,Client,S12345J,111 ABCD ABCEDE ADDRESS
1234567,BC,Client,S12345J,111 ABCD ABCEDE ADDRESS
1234567,CD,Client,S12345J,11 ABCD ABCEDE ADDRESS
1234567,DF,Client,S12345J,856 ABCD ABCEDE ADDRESS
我在 CSV 上使用拆分时遇到问题....
我使用的正则表达式命令是 /(.?,.?),.*/
if (typeof (FileReader) != "undefined") {
var Allvalues = new FileReader();
Allvalues.readAsText($("#fileUpload")[0].files[0]);
Allvalues.onload = (f) => {
this.splitted = f.target.result.split(/(.*?,.*?),.*/);
}
我期待一个数组
["1234567,AB","1234567,BC"]
喜欢
0[] = "1234567,AB"
1[] = "1234567,BC"
但我得到了
["", "1234567,AB", " ","1234567,BC",...]
喜欢
0[] = ""
1[] = "1234567,AB"
2[] = ""
4[] = "1234567,BC"
任何人都可以帮助纠正它...提前致谢
如果像 "111, ABCD ABCEDE, ADDRESS"
这样的数据中永远不会有逗号
然后你可以在逗号上拆分和破坏并做一个减少以获得唯一值
const csv = `1234567,AB,Client,S12345J,111 ABCD ABCEDE ADDRESS
1234567,BC,Client,S12345J,111 ABCD ABCEDE ADDRESS
1234567,AB,Client,S12345J,11 ABCD ABCEDE ADDRESS
1234567,DF,Client,S12345J,856 ABCD ABCEDE ADDRESS`
const res = csv.split(/\n/).reduce((acc,line) => {
const [a,b,c,d,e] = line.split(/,/)
if (!acc.find(arr => arr[0] === a && arr[1] === b)) acc.push([a, b])
return acc
},[])
console.log(res)
年长的 JS
var csv = "1234567,AB,Client,S12345J,111 ABCD ABCEDE ADDRESS\n1234567,BC,Client,S12345J,111 ABCD ABCEDE ADDRESS\n1234567,AB,Client,S12345J,11 ABCD ABCEDE ADDRESS\n1234567,DF,Client,S12345J,856 ABCD ABCEDE ADDRESS";
var lines = csv.split(/\n/)
var res = []
for (var i=0;i<lines.length;i++) {
var arr = lines[i].split(/,/);
var found = false
for (var j=0;j<res.length; j++) {
if (res[j][0] === arr[0] && res[j][1] === arr[1]) {
found = true;
break;
}
}
if (!found) res.push([arr[0], arr[1]])
}
console.log(res)
我的 csv 文件是
1234567,AB,Client,S12345J,111 ABCD ABCEDE ADDRESS
1234567,BC,Client,S12345J,111 ABCD ABCEDE ADDRESS
1234567,CD,Client,S12345J,11 ABCD ABCEDE ADDRESS
1234567,DF,Client,S12345J,856 ABCD ABCEDE ADDRESS
我在 CSV 上使用拆分时遇到问题.... 我使用的正则表达式命令是 /(.?,.?),.*/
if (typeof (FileReader) != "undefined") {
var Allvalues = new FileReader();
Allvalues.readAsText($("#fileUpload")[0].files[0]);
Allvalues.onload = (f) => {
this.splitted = f.target.result.split(/(.*?,.*?),.*/);
}
我期待一个数组
["1234567,AB","1234567,BC"]
喜欢
0[] = "1234567,AB"
1[] = "1234567,BC"
但我得到了
["", "1234567,AB", " ","1234567,BC",...]
喜欢
0[] = ""
1[] = "1234567,AB"
2[] = ""
4[] = "1234567,BC"
任何人都可以帮助纠正它...提前致谢
如果像 "111, ABCD ABCEDE, ADDRESS"
然后你可以在逗号上拆分和破坏并做一个减少以获得唯一值
const csv = `1234567,AB,Client,S12345J,111 ABCD ABCEDE ADDRESS
1234567,BC,Client,S12345J,111 ABCD ABCEDE ADDRESS
1234567,AB,Client,S12345J,11 ABCD ABCEDE ADDRESS
1234567,DF,Client,S12345J,856 ABCD ABCEDE ADDRESS`
const res = csv.split(/\n/).reduce((acc,line) => {
const [a,b,c,d,e] = line.split(/,/)
if (!acc.find(arr => arr[0] === a && arr[1] === b)) acc.push([a, b])
return acc
},[])
console.log(res)
年长的 JS
var csv = "1234567,AB,Client,S12345J,111 ABCD ABCEDE ADDRESS\n1234567,BC,Client,S12345J,111 ABCD ABCEDE ADDRESS\n1234567,AB,Client,S12345J,11 ABCD ABCEDE ADDRESS\n1234567,DF,Client,S12345J,856 ABCD ABCEDE ADDRESS";
var lines = csv.split(/\n/)
var res = []
for (var i=0;i<lines.length;i++) {
var arr = lines[i].split(/,/);
var found = false
for (var j=0;j<res.length; j++) {
if (res[j][0] === arr[0] && res[j][1] === arr[1]) {
found = true;
break;
}
}
if (!found) res.push([arr[0], arr[1]])
}
console.log(res)