Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何搜索;x";或;“任何数字”;一串?_Javascript - Fatal编程技术网

Javascript 如何搜索;x";或;“任何数字”;一串?

Javascript 如何搜索;x";或;“任何数字”;一串?,javascript,Javascript,当我想做一个掷骰子的脚本时,我遇到了一点障碍 其思想是,您可以输入任意数量的参数来掷任意数量的骰子,2d6+1d4+5d2-[…] 如何制作一个脚本来查找所有的xdy,并将它们放入一个数组中?它必须以xdy为基础,而不是以1d4+1d6-1d8等大小写的空格为基础,首先创建一个接受字符串(如“2d6”)并返回数字的函数 function rollDice(dicePattern) { var num = ... //use regex or indexOf ("d"); var side

当我想做一个掷骰子的脚本时,我遇到了一点障碍

其思想是,您可以输入任意数量的参数来掷任意数量的骰子,
2d6+1d4+5d2-[…]


如何制作一个脚本来查找所有的
x
d
y
,并将它们放入一个数组中?它必须以
x
d
y
为基础,而不是以
1d4+1d6-1d8
等大小写的空格为基础,首先创建一个接受字符串(如“2d6”)并返回数字的函数

function rollDice(dicePattern) {
  var num = ... //use regex or indexOf ("d");
  var sides = ... //regex or substring(indexOf("d) + 1);
  var sum = 0;
  for (let i = 0; i <num;i++) {
    //generate a random, multiply by sides, get the int value, and add it to sum
  }
  return sum;
}
功能滚动骰子(骰子模式){
var num=…//使用regex或indexOf(“d”);
var sides=…//regex或子字符串(indexOf(“d)+1);
var总和=0;

对于(让i=0;i,如评论中所述,regex是您的朋友。regexr非常方便

\d
将匹配一个数字字符,因此
\dd\d
将匹配字符串中的任何数字+d+数字组合

// '2d6 + 1d4 + 5d2' => ['2d6', '1d4', '5d2']
function parseRolls(rollsString)
{
  if (rollsString)
  {
    return rollsString.match(/\dd\d/g);
  }
  return [];
}

您可以使用以下方法提取数字对:

s=“1d4+1d6-1d8”;
设x=Array.from(s.matchAll(/(?\d+)-d(\d+)/g));

console.log(x);
我不完全确定您所期望的确切格式,但这将返回一个对象数组,其属性为
x
y
给定一个由加号或减号分隔的
x
d
y
字符串

函数parseDiceRoll(rollString){
让rollBlocks=rollString.split(/[\+\-]/);
返回rollBlocks.map(roll=>{
设[x,y]=滚动分割(“d”);
返回{x,y};
});
}

console.log(parsedicerll(“3d6+4d8-2d12”);
regex是您的朋友。您不也需要包含符号(加号或减号)与每个xdy关联以正确使用数组?在最后一个示例中,减号意味着什么?实际上,数字x和y意味着什么?@ASDFGerte它们是,但是我如何让正则表达式找到任何数字,然后是字母,然后是任何数字?@KyleDelaney是的,实际上是任何算术运算符,但它也应该只与单个
xd
y
参数。变量是什么意思?可以是逗号吗?可以是“是”吗“,或只有数字,或有符号与否?请您精确一点好吗?
然后拆分字符串…
这不是OP要求的方法吗?经过测试,正是我所需要的,后一个版本使它更好。谢谢!我很惊讶我得到了如此快的响应。