Ya no necesitas investigar más en otros sitios ya que llegaste al espacio justo, poseemos la solución que buscas pero sin liarte.
Solución:
Un posible algoritmo para obtener los probables separadores es bastante simple y asume que los datos están bien formados:
- Para cada delimitador,
- Por cada línea,
- Divida la línea por el delimitador, marque el
length
. - Si es
length
es no igual a la longitud de la última línea, este no es un delimitador válido.
- Divida la línea por el delimitador, marque el
- Por cada línea,
Prueba de concepto (no maneja campos citados):
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;
El length > 1
comprobar es asegurarse de que el split
no devolvió la línea completa. Tenga en cuenta que esto devuelve un array de posibles delimitadores: si hay más de un elemento, tiene un problema de ambigüedad.
Otra solución es usar el detect
método del csv-string paquete:
detectar (entrada: Cadena): Cadena Detecta el mejor separador.
var CSV = require('csv-string');
console.log(CSV.detect('a,b,c')); // OUTPUT : ","
console.log(CSV.detect('a;b;c')); // OUTPUT : ";"
console.log(CSV.detect('a|b|c')); // OUTPUT : "|"
console.log(CSV.detect('atbtc'));// OUTPUT : "t"
Sección de Reseñas y Valoraciones
Acuérdate de que tienes autorización de agregar una reseña .
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)