javascript 中的字符串连接输出错误结果

String concatenation in javascript outputs bad result

我想创建随机用户名。 我使用文件中的列表名称和名字,并随机从每个文件中获取一个。

var nameList= fs.readFileSync("random-name/names.txt").toString().split("\n");
var name = nameList[Math.ceil(Math.random()*nameList.length)];

var firstnameList= fs.readFileSync("random-name/first-names.txt").toString().split("\n");
var firstname= firstnameList[Math.ceil(Math.random()*firstnameList.length)];

当我想连接它们时出现问题:

console.log( name);
console.log( firstname);
console.log( firstname+"-"+name);

输出:

Brant
Jesselyn
-Brantyn

静态设置变量namefirstname显然没有问题。

出现这个问题是因为我用“\n”分割了文件内容,每个名字和名字的末尾仍然有“\r”。

正如您自己所说,从输入中删除 \r,或者在 \r?\n 上拆分。

其他说明:

  • 不要重复自己。
  • 你的"random item"计算有误,你应该使用floor,而不是ceil

怎么样:

function getLines(filename) {
    return fs.readFileSync(filename).toString().split(/\r?\n/);
}
Array.prototype.getRandomItem = function () {
    return this[Math.floor(Math.random() * this.length)];
};

var nameList = getLines("random-name/names.txt");
var name = nameList.getRandomItem();

var firstnameList = getLines("random-name/first-names.txt");
var firstname = firstnameList.getRandomItem();