javascript中的字符串连接输出结果不好

时间:2015-11-15 12:40:21

标签: javascript string concatenation

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

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,那么显然没有问题。

2 个答案:

答案 0 :(得分:2)

问题出现是因为我将文件内容与" \ n"分开了,而且还有" \ r"在每个名字和名字的末尾。

答案 1 :(得分:1)

正如您已经注意到的那样,从输入中删除\r,或者在\r?\n上拆分。

其他说明:

  • 不要重复自己。
  • 您的“随机项目”计算错误,您应该使用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();