CSV分隔符自动检测在Javascript中

如何检测从JavaScript / NodeJS中的string的CSV分隔符?

哪个是标准algorithm?

请注意,分隔符总是不是逗号。 最常见的分隔符是; ,和\t (制表符)。

获取可能的分隔符的一种可能的algorithm非常简单,并且假设数据是完整的:

  1. 对于每个分隔符,
    1. 对于每一行,
      1. 按分隔符分行,检查length
      2. 如果它的length 等于最后一行的长度,这不是一个有效的分隔符。

概念certificate(不处理引用的字段):

 function guessDelimiters (text, possibleDelimiters) { return possibleDelimiters.filter(weedOut); function weedOut (delimiter) { var cache = -1; return text.split('\n').every(checkLength); function checkLength (line) { if (!line) { return true; } var length = line.split(delimiter).length; if (cache < 0) { cache = length; } return cache === length && length > 1; } } } 

length > 1检查是为了确保split不只是返回整行。 请注意,这将返回一个可能的分隔符数组 – 如果有多个项目,则会产生歧义问题。