javascript:将字符串拆分为具有不同分隔符的数组

时间:2014-08-18 18:27:11

标签: javascript string

我有一个算术字符串,我想解析它以获得结果。到目前为止我提出的最好的想法是将字符串转换为数组,但我不确定正确(和交叉兼容)的方法是什么。

我必须解析的字符串是" -3-6-9-3 + 10-3-5-2" (D& D伤害滚动和主动跟踪器的阻力)。为了获得一个可用的数组,我需要通过+或 - 的运算符将其拆分,但不要丢失运算符,因为我需要知道要执行哪个操作。

有没有办法在JavaScript中执行此操作?

这是我希望回归的数组:[" -3"," -6"," -9"," -3& #34;" + 10"" -3"" -5"&#34 -2"]

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"]

在这种情况下,每个分割点将放在之前符号(即+-)。