繁体   English   中英

如何检查字符串中特定点是否存在数字?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM