如何用 javascript 中的随机数替换每个破折号 (-)?
How do I replace every dash (-) with a random number in javascript?
我有一些代码,例如 ABCDE-----ABCD-----ABC--,其中每个 (-) 都需要是一个随机数。
我可以使用替换函数将单个破折号更改为随机数,但我不知道如何使每个破折号成为随机数。注意:每个数字不需要是唯一的。
这是我现在所在的位置,但我需要数字不完全相同。 http://jsfiddle.net/oqrstsdm/
var minNumber = 1;
var maxNumber = 9;
randomNumberFromRange(minNumber, maxNumber);
function randomNumberFromRange(min, max) {
var number = (Math.floor(Math.random() * (max - min + 1) + min));
var str = "ABCDE-----FGABC--";
var res = new RegExp("-", "g");
var code = str.replace(res, number);
document.getElementById("ccode").innerHTML = "Code: " + code;
}
您可以使用函数作为 String.prototype.replace()
中的第二个参数。
var str = "ABCDE-----FGABC--";
var code = str.replace(/-/g, function() {
return Math.floor(Math.random() * (max - min + 1)) + min;
});
在 while 循环中执行。此外,您实际上并不需要正则表达式,因为您只是在寻找一个字符串。如果您确实想要将 str.indexOf("-") !== -1
的正则表达式更改为 str.match(regexp) !== null
。您也不需要使用这种方法的 g
标志。
var str = "ABCDE-----FGABC--";
var number;
while (str.indexOf("-") !== -1) {
number = Math.floor(Math.random() * 10);
str = str.replace("-", number);
}
return str;
输出:
ABCDE92136FGABC38
作为 replace
方法的替代方法,您可以使用字符串 split
method to tokenize the code, and then apply an Array reduce
方法将值与替换成的适当数字重新连接起来。
function randomNumberFromRange(min, max) {
var str = "ABCDE-----FGABC--";
return str.split("-").reduce(function(prev, val) {
return prev + rand(min, max) + val;
});
}
function rand(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
// Demo code
document.getElementById("random").onclick = function() {
document.getElementById("code").innerHTML = randomNumberFromRange(1, 9);
};
<div id="code"></div>
<div>
<button id="random">Get Code</button>
</div>
我有一些代码,例如 ABCDE-----ABCD-----ABC--,其中每个 (-) 都需要是一个随机数。
我可以使用替换函数将单个破折号更改为随机数,但我不知道如何使每个破折号成为随机数。注意:每个数字不需要是唯一的。
这是我现在所在的位置,但我需要数字不完全相同。 http://jsfiddle.net/oqrstsdm/
var minNumber = 1;
var maxNumber = 9;
randomNumberFromRange(minNumber, maxNumber);
function randomNumberFromRange(min, max) {
var number = (Math.floor(Math.random() * (max - min + 1) + min));
var str = "ABCDE-----FGABC--";
var res = new RegExp("-", "g");
var code = str.replace(res, number);
document.getElementById("ccode").innerHTML = "Code: " + code;
}
您可以使用函数作为 String.prototype.replace()
中的第二个参数。
var str = "ABCDE-----FGABC--";
var code = str.replace(/-/g, function() {
return Math.floor(Math.random() * (max - min + 1)) + min;
});
在 while 循环中执行。此外,您实际上并不需要正则表达式,因为您只是在寻找一个字符串。如果您确实想要将 str.indexOf("-") !== -1
的正则表达式更改为 str.match(regexp) !== null
。您也不需要使用这种方法的 g
标志。
var str = "ABCDE-----FGABC--";
var number;
while (str.indexOf("-") !== -1) {
number = Math.floor(Math.random() * 10);
str = str.replace("-", number);
}
return str;
输出:
ABCDE92136FGABC38
作为 replace
方法的替代方法,您可以使用字符串 split
method to tokenize the code, and then apply an Array reduce
方法将值与替换成的适当数字重新连接起来。
function randomNumberFromRange(min, max) {
var str = "ABCDE-----FGABC--";
return str.split("-").reduce(function(prev, val) {
return prev + rand(min, max) + val;
});
}
function rand(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
// Demo code
document.getElementById("random").onclick = function() {
document.getElementById("code").innerHTML = randomNumberFromRange(1, 9);
};
<div id="code"></div>
<div>
<button id="random">Get Code</button>
</div>