我有一个字符串,其中包含数字和数学运算符(+
,x
,-
,/
)
'12+345x6/789'
我需要将它转换为由这些数学运算符分隔的数组。
[12, +, 345, x, 6, /, 789]
这样做的简单方法是什么?
答案 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
}
}