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
静态设置变量name
和firstname
显然没有问题。
出现这个问题是因为我用“\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();
我想创建随机用户名。 我使用文件中的列表名称和名字,并随机从每个文件中获取一个。
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
静态设置变量name
和firstname
显然没有问题。
出现这个问题是因为我用“\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();