如何将 .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】:您可以创建一个<input type="file">
用于从您的计算机打开文件,使用FileReader
和split()
读取它,结果通过换行符(例如正则表达式/\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
;
;
<input type='file' accept='text/plain' onchange='openFile(event)'>
您可以在fiddle 中尝试一下。
您也可以按照 cmets 中的建议,使用 .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)'>
【讨论】:
一种较新的方法可能是: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 中的数组?的主要内容,如果未能解决你的问题,请参考以下文章