【问题标题】:Reading From text file Javascript从文本文件中读取 Javascript
【发布时间】:2014-10-17 04:15:58
【问题描述】:

好的,这可能很难解释。
密码不能像用户名那样起作用。
我正在阅读文本文件。

“用户名,密码”是下面的结构是文本文件

John,BOL12345
Mary2,BOL77777
Anna,BOL54321
test,BOL12345

前 3 名不能单独工作,我只需要前 3 名
但是一旦我添加了“测试,BOL12345”
密码 BOL12345 确实有效
但没有“测试,BOL12345”密码“BOL12345”不起作用或其他任何一个
我在下面的 javascript 中做这一切将是代码 sn-p.. 请提出任何问题,因为我不明白为什么会发生这种情况。

下面的 JavaScript
“行” = 上面的文本文件

    lines = x.responseText.split("\n");
    for (i=0; i < lines.length; i++)
    {
        test1 = lines[i].split(",")
        username.push(test1[0]);
        password.push(test1[1]);

    }
    var tempUsername = document.getElementById('username').value;
    var tempPassword = document.getElementById('password').value;
    var arraycontainsusername = (username.indexOf(tempUsername) > -1);
    var arraycontainspassword = (password.indexOf(tempPassword) > -1);
    alert(password);
    if (arraycontainsusername && arraycontainspassword) {
        window.location.href = "listing.htm";
    };

【问题讨论】:

  • 一些上下文会很好......你想做什么?
  • 如果您有多个用户的相同密码,您应该使用 indexOf,但这仍然不能解释这一点。 @NicolásStraubValdivieso 你有什么不明白的?
  • 在文本文件中不包含“test,BOL12345”的情况下获取前 3 名的密码。
  • 你能 console.log 数组吗?也许你错过了一个\n
  • @mplungjan 我只有一个以上可以证明密码有效..但其他密码无效。只有测试用户...这只是一个文本

标签: javascript validation genfromtxt


【解决方案1】:

有根据的猜测:您的文件使用的是\r\n。因为你是由\n 拆分的,所以\r 被留下并破坏了每个字符串。尝试按\r\n 拆分,看看会发生什么。这可以解释为什么添加最后一行会起作用,因为末尾没有换行符,不会有尾随字符来搞乱indexOf 搜索。

不同的操作系统处理文本文件的方式不同。 Windows 使用 CRLF(回车换行)跳转到下一行,而 *NIX 变体使用 LF。旧的 MacOS 版本使用 CR。您的代码假设文件来自 *NIX 环境,其中 LF(或\n)是规范,当它来自 Windows 环境时,CRLF(或\r\n)是规范(不准确,因为你可以在 Windows 中使用 LF 和在 *NIX 中使用 CRLF 制作文本文件,购买即可获得图片)。

为了正确处理所有情况,我建议在处理之前对字符串进行规范化:

x.responseText.replace(/\r\n|\r(?!\n)/g, '\n').split('\n');

中间那个看似中文的字符串实际上是匹配\r\n 或\r 的正则表达式(但仅当\r 后面没有\n 时)。这样您就可以将所有 CRLF 和 CR 替换为 LF 并处理来自任何环境的文本。

由于标记的顺序,您可以将该正则表达式简化为 /\r\n|\r/,但我将其保留,因为它说明了一个简洁的概念(前瞻 - 那位 (?!\n) 表示当且仅当不立即遵循由\n)。话虽如此,/\r\n|\r/ 的性能会更好,尤其是在处理大文件时

【讨论】:

  • 谢谢,这似乎奏效了。您是否认为您可以更深入地解释 \r 正在做什么,以便我更容易理解以供进一步使用,请
猜你喜欢
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多