[英]How do I check for the presence of numbers at a specific point in a string?
我正在尝试创建 Javascript 代码,该代码从字符串中获取 3 个单独的数字输入。 该字符串由用户向 Discord 机器人发送消息生成,旨在最终掷出三种不同类型的骰子(属性骰子、奖励骰子和齿轮骰子)。
消息的语法是:
!m 5a 10b 3g
此示例中的属性骰子 (5a) 和此示例中的奖励骰子 (10b) 的骰子池可能是 go 的两倍(从不三倍)数字,但不是齿轮骰子。 我要做的是检测此语法中的三个数字输入,长度可以是 11、12 或 13 个字符,具体取决于骰子池的长度。
这是我目前所拥有的..
// If one of the stats is double-digits.
if (length === 12) {
var attribDice = parseInt(message.substring(3, 4));
console.log(attribDice);
var bonusDice = parseInt(message.substring(6, 8));
console.log(bonusDice);
var gearDice = parseInt(message.substring(10, 11));
console.log(gearDice);
}
// If two of the stats are double-digits.
if (length === 13) {
var attribDice = parseInt(message.substring(3, 5));
console.log(attribDice);
var bonusDice = parseInt(message.substring(7, 9));
console.log(bonusDice);
var gearDice = parseInt(message.substring(11, 12));
console.log(gearDice);
}
// If all of the stats are single digits.
if (length === 11) {
var attribDice = parseInt(message.substring(3, 4));
console.log(attribDice);
var bonusDice = parseInt(message.substring(6, 7));
console.log(bonusDice);
var gearDice = parseInt(message.substring(9, 10));
console.log(gearDice);
}
目前这段代码的问题是 12 个字符长度的字符串:我需要代码来检测 attribDice 或 bonusDice 是两位数,并相应地解析它们。 我仍然是 JavaScript 的初学者,所以我非常感谢一些帮助,我相信可能有一种更有效的方法来做到这一点。 也。 请告诉我!
我将首先通过将字符串拆分为 4 个部分来将输入分解为单独的部分
var parts = input.split(' ');
现在你在parts[0]中有你的命令“,m”,parts[1]是“5a”,parts[2]是“10b”。 等等
您仍然可以使用 parseInt() 来获取每个骰子的数值,因为它会忽略尾随字符。 考虑使用parseInt的第二个参数只是为了确保结果符合预期。
我建议您验证 parseInt 的结果,并确保它在您解析用户提供的数据时的预期范围内。 用户可能会向您发送“.m 9999999a 99999999b 9999999g”,如果您根据这些数字做很多工作,他们可能会破坏您的应用程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.