var s = '八十七加三十二减四十三加二十四减十五减三十加三减二';
function fn(str){
let add = []
let sub = []
let num = []
let len = str.length
let tmp = 0
while(tmp<len){
tmp = str.indexOf('加',tmp)
if(tmp === -1){
break;
}
add.push(tmp);
tmp++
}
while(tmp<len){
tmp = str.indexOf('减',tmp)
if(tmp === -1){
break;
}
sub.push(tmp);
tmp++
}
str = str.replace(/加/g,',')
str = str.replace(/减/g,',')
num = str.split(',')
for(let i =0;i<num.length;i++){
if(num[i].length == 1)
{
switch(num[i]){
case '零':
num[i]=0;
break;
case '一':
num[i]=1;
break;
case '二':
num[i]=2;
break;
case '三':
num[i]=3;
break;
case '四':
num[i]=4;
break;
case '五':
num[i]=5;
break;
case '六':
num[i]=6;
break;
case '七':
num[i]=7;
break;
case '八':
num[i]=8;
break;
case '九':
num[i]=9;
break;
case '十':
num[i]=10;
break;
}
}
else if(num[i].length == 2)
{
if(num[i][0]== '十'){
switch(num[i][1]){
case '一':
num[i]=11;
break;
case '二':
num[i]=12;
break;
case '三':
num[i]=13;
break;
case '四':
num[i]=14;
break;
case '五':
num[i]=15;
break;
case '六':
num[i]=16;
break;
case '七':
num[i]=17;
break;
case '八':
num[i]=18;
break;
case '九':
num[i]=19;
break;
}
}
else{
switch(num[i][0]){
case '二':
num[i]=20;
break;
case '三':
num[i]=30;
break;
case '四':
num[i]=40;
break;
case '五':
num[i]=50;
break;
case '六':
num[i]=60;
break;
case '七':
num[i]=70;
break;
case '八':
num[i]=80;
break;
case '九':
num[i]=90;
break;
}
}
}
else{
switch(num[i][0]){
case '二':
num[i] = num[i].replace('二','2');
break;
case '三':
num[i] = num[i].replace('三','3');
break;
case '四':
num[i] = num[i].replace('四','4');
break;
case '五':
num[i] = num[i].replace('五','5');
break;
case '六':
num[i] = num[i].replace('六','6');
break;
case '七':
num[i] = num[i].replace('七','7');
break;
case '八':
num[i] = num[i].replace('八','8');
break;
case '九':
num[i] = num[i].replace('九','9');
break;
}
switch(num[i][2]){
case '一':
num[i] = num[i][0] * 10 + 1
break;
case '二':
num[i] = num[i][0] * 10 + 2
break;
case '三':
num[i] = num[i][0] * 10 + 3
break;
case '四':
num[i] = num[i][0] * 10 + 4
break;
case '五':
num[i] = num[i][0] * 10 + 5
break;
case '六':
num[i] = num[i][0] * 10 + 6
break;
case '七':
num[i] = num[i][0] * 10 + 7
break;
case '八':
num[i] = num[i][0] * 10 + 8
break;
case '九':
num[i] = num[i][0] * 10 + 9
break;
}
}
}
str = ''
for(let j=0;j<num.length;j++)
{
str += num[j]
if(add.length <= sub.length){
if(add[0]<sub[0])
{
str += '+'
add.shift()
}
else
{
str += '-'
sub.shift()
}
}else{
if(add[0]>sub[0])
{
str += '-'
sub.shift()
}
else
{
str += '+'
add.shift()
}
}
}
str = str.slice(0,str.length-1)
return eval(str)
}
console.log(fn(s))