/**
* @desc split a row of csv data into a list of strings.
* @param string csvRowData - a row of csv data
* @return list[string] result
*/
function CSVSplit(csvRowData){
csvRowData = csvRowData.replace("\r", "");
var data = [];
var seekMode = false;
var startPos = 0;
for(var i = 0; i < csvRowData.length; i++) {
var char = csvRowData[i];
switch(char){
case "\"":
if(i < csvRowData.length - 1) {
var charN = csvRowData[i + 1];
if(charN == ",") {
// if two chars are ", : meaning it's the end of seeking mode
seekMode = false;
var value = csvRowData.slice(startPos + 1, i);
// skip next char
i++;
// always skip the ,
startPos = i + 1;
// add value to the list
data.push(value);
continue;
}
}
break;
case ",":
if(!seekMode) {
// if not then split the data
var value = csvRowData.slice(startPos, i);
// always skip the ,
startPos = i + 1;
// add value to the list
data.push(value);
}
// first check whether it is in the range
if(i < csvRowData.length - 1) {
var charN = csvRowData[i + 1];
if(charN == "\"") {
// if two chars are ," : meaning it's the start of seeking mode
seekMode = true;
}
}
break;
}
}
// after done looping, wrap it up, add the last value
var value = csvRowData.slice(startPos, csvRowData.length);
data.push(value);
return data;
}
Example usage:
string -> array[string]
