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

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

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

Name1
Name2
Name3

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

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

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

有人可以帮忙吗?

【问题讨论】:

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

标签: javascript arrays document txt


【解决方案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 是你需要的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    相关资源
    最近更新 更多