问题:
逐行从.txt文件中读取学生姓名。
对于每个名字,询问学生是否在课堂上。
例如:
迈克尔在上课吗?[是/否]
让用户输入yes或no。
将每个名称和条目存储在另一个.txt文件中。
解决方案:
我已经编写了这个几乎可以工作的代码,只是在通过readlinesync模块循环以一个接一个地提示名称时遇到了问题。
var fs = require("fs");
var text = fs.readFileSync("./test.txt");
var nameByLine = text.toString().split("\n");
var readlineSync = require("readline-sync");
module.exports = function rollCall() {
let attendance = [];
nameByLine.forEach(name => {
let userResp = readlineSync.question(`Is ${name} in class: `);
if (userResp.toLowerCase() == "yes") {
present = `${name}:\t\t✅}`;
attendance.push(present);
} else {
absent = `${name}:\t\t❌}`;
attendance.push(absent);
}
});
attendance;
return fs.writeFileSync("./newtest.txt", attendance.join("\n"));
};
预期产量:
-在课堂上:是
-在课堂上:没有
“结果”
-在课堂上:是
在运行代码之前
运行代码后
最佳答案
您正在使用换行(\n
)拆分文件,但该文件是csv格式的。
所以有两种解决方案:
1)把名字排成一行。代码将按原样工作。
2)用逗号分隔行。
nameByLine.split(',').map((e)=>e.trim()).forEach(...)