Javascript JS函数中的字符串操作

Javascript JS函数中的字符串操作,javascript,jquery,Javascript,Jquery,我有话要说 ((C1 AND C2) OR C3 AND C4) 现在,如果输入是'2',我应该删除C2和下一个运算符,即OR,并重新排列编号。。。所以输出是 ((C1 AND ) C2 AND C3). **测试字符串输入和输出 ----------STRING --------------------------- INPUT ---------------EXPECTED OUTPUT 1. (C1 AND C2 OR C3 AND C4) <&

我有话要说

((C1 AND C2) OR C3 AND C4) 
现在,如果输入是'2',我应该删除C2和下一个运算符,即OR,并重新排列编号。。。所以输出是

((C1 AND ) C2 AND C3).
**测试字符串输入和输出

----------STRING --------------------------- INPUT ---------------EXPECTED OUTPUT

1. (C1 AND C2 OR C3 AND C4)                <<3(Input)>>          (C1 AND C2 OR C3)

2.  C1 OR C2 AND (C3 OR C4) AND C5         <<2(Input)>>          C1 OR (C2 OR C3) AND C4
------------字符串------------------输入------------------预期输出
1.(C1和C2或C3和C4)(C1和C2或C3)
2.C1或C2和(C3或C4)以及C5或(C2或C3)和C4

因此,我只需要删除带有给定输入no和next运算符(如果有)的“C”,保留所有括号并用升序编号重新编号“C”。这必须在JS函数中完成,只要输入保持一致,那么沿着这些线的东西可能会适合您的需要。我知道您说过“保留所有括号”,但这会导致输出不好,所以我选择更正括号。你可以很容易地取出那部分

function handleInput(str, input){
  var inArray = str.split(' ');
  inArray.forEach(function(v,i,a){
    if(v.indexOf("C"+input) > -1){
      if(v.indexOf('(') > -1 || v.indexOf(')') > -1)
        inArray = fixParen(inArray, input, v, i);
      else if(i+2 < a.length){
        inArray.splice(i,2);
        inArray = fixNumbers(inArray);
      }
      else
        inArray.splice(i-1,2);
      console.log(inArray.join(' '));
    }
  });
}
function fixParen(inArray, input, elem, index){
  var elemArray = elem.split('');
  var parenNumber = 0;
  if(elem.indexOf('(') > -1){
    elemArray.forEach(function(v){
      if(v == '('){
        parenNumber++;
      }
    });
    for (var i = index+2; parenNumber > 0; i+=2){
      var tempElem = inArray[i].split('');
      var n = tempElem.indexOf(')');
      if(n > -1){
        tempElem.splice(n,1);
        inArray[i] = tempElem.join('');
        parenNumber--;
      }
    }
    inArray.splice(index,2);
    return fixNumbers(inArray);
  }
  else{
    elemArray.forEach(function(v){
      if(v == ')'){
        parenNumber++;
      }
    });
    for (var i = index-2; parenNumber > 0; i-=2){
      var tempElem = inArray[i].split('');
      var n = tempElem.indexOf('(');
      if(n > -1){
        tempElem.splice(n,1);
        inArray[i] = tempElem.join('');
        parenNumber--;
      }
    }
    inArray.splice(index,2);
    return fixNumbers(inArray);
  }
}
function fixNumbers(inArray){
  var count = 1;
  inArray.forEach(function(v,i,a){
    if(v.indexOf('C') > -1){
      var tempElem = v.split('');
      var n = tempElem.indexOf('C');
      tempElem.forEach(function(val,ind,arr){
        if(parseInt(val,10))
          tempElem.splice(ind,1);
      });
      tempElem.splice(n+1,0,count);
      inArray[i] = tempElem.join('');
      count ++;
    }
  });
  return inArray;
}
函数句柄输入(str,输入){
var inArray=str.split(“”);
inArray.forEach(函数(v,i,a){
如果(v.indexOf(“C”+输入)>-1){
如果(v.indexOf('(')>-1 | | v.indexOf(')'))>-1)
inArray=fixParen(inArray,输入,v,i);
否则如果(i+2-1){
Elemaray.forEach(函数(v){
如果(v=='('){
parenNumber++;
}
});
对于(var i=指数+2;parenNumber>0;i+=2){
var tempElem=inArray[i]。拆分(“”);
var n=tempElem.indexOf(');
如果(n>-1){
节拍拼接(n,1);
inArray[i]=临时连接(“”);
帕伦编号--;
}
}
非射线拼接(索引,2);
返回固定号码(inArray);
}
否则{
Elemaray.forEach(函数(v){
如果(v==')'){
parenNumber++;
}
});
对于(var i=指数-2;parenNumber>0;i-=2){
var tempElem=inArray[i]。拆分(“”);
var n=tempElem.indexOf('(');
如果(n>-1){
节拍拼接(n,1);
inArray[i]=临时连接(“”);
帕伦编号--;
}
}
非射线拼接(索引,2);
返回固定号码(inArray);
}
}
函数FixNumber(inArray){
var计数=1;
inArray.forEach(函数(v,i,a){
if(v.indexOf('C')>-1){
var tempElem=v.分割(“”);
var n=tempElem.indexOf('C');
时差(函数(val、ind、arr){
if(parseInt(val,10))
临时接头(ind,1);
});
节拍拼接(n+1,0,计数);
inArray[i]=临时连接(“”);
计数++;
}
});
返回inArray;
}

这实际上是一个比看起来简单得多的问题。首先,您应该注意字符串的每个重要部分都由一个“”平均分隔。这允许我们使用
.split(“”)
为我们提供一个包含所有有用部分的漂亮数组。接下来,括号只能位于
C
元素上,以减少所需的逻辑量。然后,每个
都有相应的
在某些情况下,我们可以完全忽略对字符串长度的测试,因为我们可以假设有一个元素具有匹配的括号。最后只有两种情况,它是最后一个
C
元素,因此我们在前面删除运算符,或者它不是最后一个,然后删除后面的一个。括号匹配aside、 这方面的逻辑非常简短。

“这必须在JS函数中完成”---你会付多少钱?这不是一个编程的红十字会。是的,这一个需要一段时间,你应该先尝试一下。是的,我也在尝试,但缺乏JS知识,我一事无成。事实上还有很多事情要做…如果你帮不上忙,至少不要投反对票或负面评论…好的,这里有一些指导。找出如何分割根据某些分隔符将字符串分成两个字符串。或者找出如何替换字符串中的字符。请特别注意“方法”部分: