我有一个算术字符串,我想解析它以获得结果。到目前为止我提出的最好的想法是将字符串转换为数组,但我不确定正确(和交叉兼容)的方法是什么。
我必须解析的字符串是" -3-6-9-3 + 10-3-5-2" (D& D伤害滚动和主动跟踪器的阻力)。为了获得一个可用的数组,我需要通过+或 - 的运算符将其拆分,但不要丢失运算符,因为我需要知道要执行哪个操作。
有没有办法在JavaScript中执行此操作?
这是我希望回归的数组:[" -3"," -6"," -9"," -3& #34;" + 10"" -3"" -5"&#34 -2"]
答案 0 :(得分:1)
您可以拆分重新加入,添加不同的分隔符以用于最终分割:
var x = '-3-6-9-3+10-3-5-2';
var y = x.split('-').join(';-;').split('+').join(';+;').split(';');
//["", "-", "3", "-", "6", "-", "9", "-", "3", ...]
y
是一个数组,它将-
和+
字符上的原始字符串拆分,然后将它们添加回原始位置的数组中。
如果您希望将+
和-
字符与其字符保持一致,请从连接中删除第二个;
。
var y = x.split('-').join(';-').split('+').join(';+').split(';');
//["", "-3", "-6", "-9", "-3", "+10", "-3", "-5", "-2"]
答案 1 :(得分:1)
虽然使用capturing parens肯定是一种有效的方法,但我建议使用前瞻分割:
var str = '-3-6-9-3+10-3-5-2';
str.split(/(?=[-+])/); // no need to check for digits here actually
// ["-3", "-6", "-9", "-3", "+10", "-3", "-5", "-2"]
在这种情况下,每个分割点将放在之前符号(即+
或-
)。