2017-01-09 1 views
0

기본적으로, 나는 진술서를 가지고있다.javascript/angularjs의 괄호를 기반으로 한 AND 및 OR 조건문을 파싱 하시겠습니까?

$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

'|'와'&'는 논리 연산자가 아닌 2 진 연산자라는 것을 이해하십시오. "문자열 연산"태그가 필요한 이유는 무엇입니까? – Pointy

+0

내 나쁜, 여전히 이것에 새로운, 입력 주셔서 감사합니다, 그에 따라 변경됩니다! –

+0

JavaScript에서는 정규 표현식을 사용하여 텍스트에서 문자열을 추출 할 수 있습니다. [MDN 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"] 등등.

관련 문제