【问题标题】:read txt file line by line and update variable on each line逐行读取txt文件并在每一行更新变量
【发布时间】:2021-10-18 03:47:28
【问题描述】:

我正在尝试使用 fetch() 逐行读取 txt 文件

这是我所拥有的:

fetch('http://localhost:8888/foo.txt')
  .then(response => response.text())
  .then((data) => {
  var player = GetPlayer();
  player.SetVar("phrase",data);
  })

此代码一次读取整个 txt 文件并正确显示在 "phrase" 变量中。

但我想要类似的东西:
读取第 1 行 -> 在变量上显示第 1 行
读取第 2 行 -> 在变量上显示第 2 行
读取第 3 行 -> 在变量上显示第 3 行
...

这可能吗?

谢谢!

【问题讨论】:

  • "在变量上显示第 x 行" 是什么意思?
  • 这意味着,假设第 1 行的 txt 文件内容在下一行“dog”和第 3 行“parrot”上的单词“cat”,然后我想在变量上显示: cat 然后按下例如一个按钮,变量必须显示单词 dog 然后是单词 parrot。这有意义吗?
  • 如果您出于性能原因想使用逐行读取,请不要打扰,因为在 JavaScript 的情况下,整个内容已经加载到内存中。但是出于功能原因,您可以只做一个split(\n),它会为您提供一个数组,其中每一行都是一个成员
  • @aghArdeshir 我已经添加了split(\n),但仍然给我文件中的整个文本:var lines = data.split('\n'); for (var line = 0; line < lines.length; line++) { var player = GetPlayer(); player.SetVar("phrase", data);
  • @efe 好吧,在这种情况下,可能使用了一些其他的行尾,而不是您期望的。也许\r\r\n,也许一些自定义代码将所有字符串连接在一起。你可以 console.log 你的data 并使用charCodeAt,检查单词之间存在什么字符。

标签: javascript arrays fetch-api


【解决方案1】:

你可以只使用一些 String 方法。您可以使用带有\n 的 .split() 方法作为正则表达式,它将您的数据拆分为一个数组。

例子:

假设 localhost:6060/foo.txt 的文本文件有以下内容:

格式 - username:password

Peter:NoLol1231@
Maffe:xDOkLmao
Loe:OOPSOkay
John:OhXDAlright

我们可以像这样以适当的方式访问数据,

const fetch = require('node-fetch');
async function getData() {
   return new Promise(resolve => {
       let result = (await (await fetch("http://localhost:6060/foo.txt")).text()).split('\n');
       let finalres = result.map((x) => ({[x.split(':')[0]]: x.split(':')[1]}));
       resolve(finalres)
   });
}

getData((d) => {
   console.log(d["Peter"]); // Will print his password now!
});

【讨论】:

  • 你是对的,但可能会根据他的示例代码显示一个示例
  • 一个很好的例子,我知道 split() 应该在第一个和第二个之间。那么?
  • @daysling 我修改了代码添加: var textByLine = data.split("\n");之前 var player = GetPlayer();但仍然一次阅读整个文档
  • @efe,你没有从 .text() 返回值,你应该让它返回 .text(),我的意思是 .then(response => response.text()).... 应该改为 `.then(response = > 返回 response.text())....`
  • @daysling 非常感谢您的回答,但我应该在非异步上下文中拆分这些行。这可能吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-15
  • 2012-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多