如何解决如何将字符串数学表达式中的组件与 javascript 中的未知数字匹配? 编辑
所以我有这个包含数学表达式作为字符串的数据数组。
var data = ['1+1=?','123*45?=5?088','-5?*-1=5?','19--45=5?','??*??=302?','?*11=??','??*1=??','??+??=??']
问号表示未知数字,因此它是数字的一部分。如何将它们分开,以便将因子/加数、运算和答案存储在数组中?
这是我想要得到的结果:
'1+1=?' ---> ['1','+','1','?']
'123*45?=5?088' ---> ['123','*','45?' '5?088']
'-5?*-1=5?' ---> ['-5?','-1',5?']
'19--45=5?' ---> ['19','-','-45','5?']
'??*??=302?' ---> ['??','??','302?']
'?*11=??' ---> ['?','11','??']
'??*1=??' ---> ['??','??']
'??+??=??' ---> ['??','??']
这对我来说很棘手,尤其是负数减法。
提前致谢!
解决方法
你可以试试这个正则表达式:
-?[\d?]+|[^=]
-
-?[\d?]+
:数字和?
的任意组合,带有可选的前导-
。 -
|
:或 -
[^=]
:不是=
检查 test cases
const texts = [
'1+1=?','123*45?=5?088','-5?*-1=5?','19--45=5?','??*??=302?','?*11=??','??*1=??','??+??=??'
];
const regex = /-?[\d?]+|[^=]/g;
const groups = texts.map(text => text.match(regex));
console.log(groups);
编辑
如果格式一致,你可以试试这个正则表达式来得到等式的每一部分:
(-?[\d?]+)([^=\d?])(-?[\d?]+)=(-?[\d?]+)
const texts = [
'1+1=?','??+??=??','?33438-103326=410112'
];
const regex = /^(-?[\d?]+)([^=\d?])(-?[\d?]+)=(-?[\d?]+)$/;
const groups = texts.map(text => text.match(regex).splice(1));
console.log(groups);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。