Estoy tratando de convertir un documento .txt en una matriz.
El documento tiene nombres y está estructurado así:
Name1 Name2 Name3El programa tiene que leer las líneas y la salida debe ser
["Name1","Name2","Name3"].He buscado en Internet, pero la mayoría de las soluciones solo involucran node.js, que no puedo instalar en la computadora en la que necesito el software, o algún código xmlhttp complejo que no entiendo. Solo estoy buscando una solución simple.
¿Alguien puede ayudar?
Puede crear un <input type="file"> para abrir un archivo desde su computadora, leerlo con un FileReader y split() el resultado por nueva línea (por ejemplo, con regex /\r?\n/ ) para convertirse en una matriz de palabras.
const openFile = (e) => { const reader = new FileReader(); // filereader reader.readAsText(e.target.files[0]); // read as text reader.onload = () => { const text = reader.result; const result = text.split(/\r?\n/); // split on every new line console.log(result); // do something with array }; }; <input type='file' accept='text/plain' onchange='openFile(event)'>Puedes probarlo en este violín .
También podría lograr esto de otra manera (más nueva) como se sugiere en los comentarios, usando .then .
const openFile = (e) => { e.target.files[0].text().then((t) => { const outcome = t.split(/\r?\n/); console.log(outcome); }); }; <input type='file' accept='text/plain' onchange='openFile(event)'>Como no usará el nodo, supongo que está ejecutando su código en un navegador. Y el archivo de un <input type="file"/>
<html> <input type="file" id="inputFile"> <script> const inputFile = document.querySelector('#inputFile'); inputFile.addEventListener('change', () => { const fileReader = new FileReader(); fileReader.onload = e => { const array = e.target.result.split('\n'); console.log(array); }; fileReader.readAsText(inputFile.files[0], 'UTF-8'); }); </script> </html>Para obtener el contenido del archivo, puede usar la fetch API en js, que es bastante simple (simplemente pase la URL del archivo como parámetro) y límpiela para usarla. Además, para resolver su problema con respecto a convertir el texto extraído del archivo en una matriz, usted puede usar el método string.split !
async function getFile(fileURL){ let fileContent = await fetch(fileURL); fileContent = await fileContent.text(); return fileContent; } // Passing file url getFile('file.txt').then(content =>{ // Using split method and passing "\n" as parameter for splitting let array = content.trim().split("\n"); console.log(array); }).catch(error =>{ console.log(error); });Después de obtener el texto, puede usar el método
string.splity, cuando se usa con el método.trim(), ¡también eliminará los espacios adicionales!
Lea los documentos de MDN para obtener información sobre la API de recuperación