如何将 .txt 文档转换为 JavaScript 中的数组?

Posted

技术标签:

【中文标题】如何将 .txt 文档转换为 JavaScript 中的数组?【英文标题】:How can i convert a .txt document into an array in JavaScript? 【发布时间】:2021-10-24 02:11:40 【问题描述】:

我正在尝试将 .txt deocument 转换为数组。

文档中有名称,结构如下:

Name1
Name2
Name3

程序必须读取行并且输出应该是

["Name1","Name2","Name3"].

我查看了整个互联网,但大多数解决方案只涉及 node.js,我无法将其安装在我需要该软件的计算机上,或者一些我不明白的复杂 xmlhttp 代码。我只是在寻找一个简单的解决方案。

有人可以帮忙吗?

【问题讨论】:

不清楚你在问什么。您需要 一些 机制来读取文件。它是什么取决于您的服务器设置和您的偏好。 你不能使用节点,那么你在哪里运行 javascript?浏览器? 或者这只是你将在本地运行的东西?请参阅How to Ask 并提供更多信息。 【参考方案1】:

由于您不会使用节点,我假设您在浏览器上运行代码。来自<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>

【讨论】:

【参考方案2】:

您可以创建一个&lt;input type="file"&gt; 用于从您的计算机打开文件,使用FileReadersplit() 读取它,结果通过换行符(例如正则表达式/\r?\n/)成为一个单词数组。

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
  ;
;
&lt;input type='file' accept='text/plain' onchange='openFile(event)'&gt;

您可以在fiddle 中尝试一下。

您也可以按照 cmets 中的建议,使用 .then 以另一种(更新的)方式完成此操作。

const openFile = (e) => 
  e.target.files[0].text().then((t) => 
    const outcome = t.split(/\r?\n/);
    console.log(outcome);
  );
;
&lt;input type='file' accept='text/plain' onchange='openFile(event)'&gt;

【讨论】:

一种较新的方法可能是:e.target.files[0].text().then(...) 并跳过 FileReader 的漏洞,然后您可以根据需要使用 async/await @Endless 不知道这个,谢谢推荐,我加进去了。 fyi,你还得到了 file.arrayBuffer()file.stream() 需要 json 吗? new Response(file).json()【参考方案3】:

要获取文件内容,您可以在 js 中使用 fetch API,这非常简单(只需将文件 url 作为参数传递进去)并清理使用..此外,为了解决您关于转换从文件中提取的文本的问题放入一个数组,你可以使用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);
);

获取文本后,您可以使用string.split 方法,当与.trim() 方法一起使用时,也会删除多余的空格!

阅读 MDN 文档了解有关 fetch API 的信息

【讨论】:

@PhDaher 我认为这里的 fetch API 是你需要的!

以上是关于如何将 .txt 文档转换为 JavaScript 中的数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何将WORD文件转换为带有不同标题的.txt文件?

如何把PDF文件内容转换成TXT

如何批量的把WORD文件变为TXT文件???

如何将数据帧转换为 Iramuteq 和 Alceste 可读的 txt

如何将许多ANSI格式的txt文档批量转换成UTF8格式?

如何将TXT文档里的文字改编码成utf-8