2017-01-09 20 views
0

Хорошо, так что в принципе, у меня есть утверждение как таковое;Обоснование утверждения AND и OR на основе скобок в javascript/angularjs?

$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))"; 

что-то вроде этого.

+0

Поймите, что '|' и '&' являются двоичными операторами, а не логическими операторами. Почему тег «string-operations»? – Pointy

+0

мой плохой, но новый для этого, спасибо за вход, изменит его соответственно! –

+0

В JavaScript регулярные выражения могут использоваться для извлечения строк из текста. См. [Руководство по JavaScript JavaScript - регулярные выражения] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions). – georgeawg

ответ

0

поэтому, немного исследовав, я бы сказал, что это одно решение о том, как разбить строку на основе математической логики.

$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»] и т. Д.