JSFiddle - React, Tailwind, and code Playground
JavaScript
function split_except_within(text, split_char, encapsulator_char, escape_char) {
var start = 0
var encapsulated = false
var fields = []
for (var c = 0; c < text.length; c++) {
var char = text[c]
if (char === split_char && ! encapsulated) {
fields.push(text.substring(start, c))
start = c+1
}
if (char === encapsulator_char && (c === 0 || text[c-1] !== escape_char) ) encapsulated = ! encapsulated
}
fields.push(text.substring(start))
return fields
}
var text = 'a,b,c,,d,"f,g","h\\",j",k,'
var fields = split_except_within(text, ',', '"', '\\')
console.log(fields)