Javascript:将字符串拆分为数组匹配参数

时间:2018-03-29 00:59:52

标签: javascript arrays string

我有一个字符串,其中包含数字和数学运算符(+x-/

'12+345x6/789'

我需要将它转换为由这些数学运算符分隔的数组。

[12, +, 345, x, 6, /, 789]

这样做的简单方法是什么?

3 个答案:

答案 0 :(得分:2)

分割连续的non-digit字符\D+即可获得

console.log ('12+345x6/789'.split (/\D+/))
// [ '12', '345', '6', '789' ]

如果你添加capture group(\D+),你也会得到分隔符

console.log ('12+345x6/789'.split (/(\D+)/))
// [ "12", "+", "345", "x", "6", "/", "789" ]

如果您想支持解析小数,请将正则表达式更改为/([^0-9.]+)/ - 注意,上面使用的\D相当于[^0-9],所以我们在这里所做的就是添加{{ 1}}到字符类

.

编写程序其余部分的可能方法

console.log ('12+3.4x5'.split (/([^0-9.]+)/))
// [ "12", "+", "3.4", "x", "5" ]

答案 1 :(得分:2)

如果你不关心空格,你只需要

'12+345x6/78-9'.match(/\d+|[\+-\/x]/g);

将字符串拆分为数字以及+-\x令牌。



'use strict';
const tokens = '12+345x6/78-9'.match(/\d+|[\+-\/x]/g);

console.log(tokens);




要处理空白,请考虑

'12+3 45 x6/78-9'.match(/\d|\d[\s\d]\d|[\+-\/x]/g);

将字符串拆分为数字(可选地允许空格作为单个数字中的数字分隔符)和+-\x



'use strict';
const tokens = '12+3 45 x6/78-9'.match(/\d+\s?\d+|\d+|[\+-\/x]/g);


console.log(tokens);




答案 2 :(得分:1)

这将会起作用



foreach($newDatas as $parent => $value) {
    echo $value; // should return NorthAmerica
    foreach($parent as $values) {
        echo $values['capital']; // should return Ottawa
    }
}