【发布时间】: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