JavaScript if语句不';t似乎在比较字符串中的某些值
为了好玩,我正在创建一个简单的discord机器人,并决定让它读取一个文本文件,只显示以我设置的字符串开头的行。我使用的是节点模块n-readlines,我编写的以下代码最初是有效的JavaScript if语句不';t似乎在比较字符串中的某些值,javascript,node.js,Javascript,Node.js,为了好玩,我正在创建一个简单的discord机器人,并决定让它读取一个文本文件,只显示以我设置的字符串开头的行。我使用的是节点模块n-readlines,我编写的以下代码最初是有效的 function readLatestCrashReport() { const lineByLine = require('n-readlines'); const liner = new lineByLine('tests/crash-report.txt'); let line, li
function readLatestCrashReport() {
const lineByLine = require('n-readlines');
const liner = new lineByLine('tests/crash-report.txt');
let line, linesToPrint = 0, stackTraceFound = false, errors = [];
while (line = liner.next()) {
line = line.toString('ascii').toLowerCase();
if (line.substring(0, 12) === 'description:') {
errors.push(line);
} else if (line === 'stacktrace:') {
errors.push(line);
linesToPrint = 3;
stackTraceFound = true;
} else if (linesToPrint > 0 && line !== '') {
linesToPrint--;
errors.push(line);
} else if (stackTraceFound === true && linesToPrint < 1) {
liner.close();
}
}
if (errors.length !== 0) {
return errors.join('\n');
} else {
return 'No Description Or Stacktrace Could Be Found';
}
}
最初的结果是:
Description: Initializing
Stacktrace:
Printed first line
Printed second line
Printed third line
这很完美,但我第二天回来,这次的结果是:
Description: Initializing
我觉得这很奇怪,所以我记录了console.logline
以查看发生了什么,控制台如预期的那样:
Description: Initializing
Stacktrace:
Printed first line
Printed second line
Printed third line
Not printed fourth line
Not printed fifth line
Not printed seventh line
出于某种原因,if语句似乎适用于第一行,然后继续不适用于任何其他if语句。
我试着将
===
更改为==
,但没有任何改变。我添加了更多的Description:initialized
行,它只打印它们,但完全忽略Stacktrace:
,最后我尝试切换if语句,它仍然只打印Description:initialized
。是我做错了什么,还是JavaScript搞乱了?使用.trim()修复了这个问题,它在MAC而不是Windows上工作的原因可能在于它们如何处理新行。Mac仅使用'\n'
而Windows使用'\r\n'
您确定输入文件中的“Stacktrace:”后面没有空格吗?也许在toLowerCase()之后添加一个.trim()会有帮助吗?谢谢,这看起来很有效,但奇怪的是它现在才开始这么做。这原本在MAC上有效,但在Windows上似乎会中断,除非您添加修剪。
Description: Initializing
Stacktrace:
Printed first line
Printed second line
Printed third line
Not printed fourth line
Not printed fifth line
Not printed seventh line