【问题标题】:Parsing AND and OR condition statement based on a parentheses in javascript/angularjs?基于javascript / angularjs中的括号解析AND和OR条件语句?
【发布时间】:2017-05-23 06:57:46
【问题描述】:

好吧,基本上,我有这样的声明;

$scope.promotion = "((A|B)|(C|D)) & (E | ((F|G) & (H|I))) & (J | K)";

是否可以根据括号分隔此字符串?这样我就可以得到回报;

$scope.promo1 = "(A|B)";
$scope.promo2 = "(C|D)";
$scope.promo3 = "((A|B) | (C|D))";

类似的东西。

【问题讨论】:

  • 了解|& 是二元运算符,而不是逻辑运算符。为什么是“字符串操作”标签?
  • 我的错,还是新手,感谢您的输入,会相应地更改它!
  • 在 JavaScript 中,正则表达式可用于从文本中提取字符串。见MDN JavaScript Guide -- Regular Expressions
  • 感谢您的回复,@georgeawg 非常感谢,我也尝试过使用 RegEx,但问题是,当它存储时,它会返回一些喜欢的东西; [ "A|B|C", "&H", "&", "D|E|F|G" ] 但我想要的是 ["(A|B)", "(C|D)" , (A|B)|(C|D)"] 不确定这有多清楚,但是是的..

标签: javascript angularjs parsing binary-operators


【解决方案1】:

所以在研究了一下之后,我会说这是关于如何根据数学逻辑分解字符串的一种解决方案。

$scope.array1 = [];
$scope.array2 = [];
var txt1 = "((A|B)|(C|D)) & (E | ((F|G) & (H|I))) & (J | K)";

for(var i=0; i < txt1.length; i++){
   if(txt1.charAt(i) === '('){
     $scope.array1.push(i);
   }
   if(txt1.charAt(i) === ')'){
     $scope.array2.push(txt1.substring($scope.array1.pop()+1,i));
   }
} 

因此,它 array2 会返回类似的东西; ["A|B", "C|D"] 等等。

【讨论】:

    猜你喜欢
    • 2021-01-21
    • 2021-10-27
    • 2021-03-22
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多