> 웹 프론트엔드 > JS 튜토리얼 > js replacement_javascript 기술

js replacement_javascript 기술

WBOY
풀어 주다: 2016-05-16 19:06:04
원래의
1253명이 탐색했습니다.

질문: ()()()(())())를 대괄호 일치를 처리하는 데 사용되는 [][][[[]][]]로 바꾸세요.
작성자: infinte
요구 사항:
[1] 모든 "대괄호"를 지원합니다. 즉, []<>{}()...또는 XML 형식: , [cc] [cc :over], {ttt] [ttt}
[2] 엄격히 일치하는 레벨, 즉 (a)b(c(d)e)는 대신 [a]b[c[d]e]로 대체됩니다. [a]b[c(d]e) (너무 일찍 끝남)
[3] 오른쪽 괄호보다 왼쪽 괄호가 더 많은 경우 추가 괄호를 유지하세요. 즉, ()()((()( )) → [ ][]([[][]]
[4] 왼쪽 괄호보다 오른쪽 괄호가 더 많습니다. 추가 괄호를 유지하세요. 즉, (()()(()()))) )) → [[][ ][[][]]])))

옵션 1: 스택 사용
작성자: 겨울
코드:

코드 복사 코드는 다음과 같습니다.

<script> <br>var strArr = "()()((() ())"; <br><br>함수 변경(str) <br>{ <br> var a=str.split(""); <br> var c=0; <br> var stack=[] ; <br> var match={ <br> "(":")", <br> "{":"}", <br> "<":">", <br> "【": "】" <br> } <br> for(var i=0;i<a.length;i ) <BR> if(match[a[i]]){ <BR> stack.push([a[i ],i]); <BR> } <BR> else if(a[i]==")"||a[i]=="}"||a[i]==">"|| a[i]=="]") { <br> if(!stack.length)continue; <br> var tmp=stack.pop() <br> if(match[tmp[0]]==a [i])a[i]=" ]",a[tmp[1]]="["; <br> else stack.push(tmp) <br> } <br> return a.join("" ) ; <br>} <br>alert(change(strArr)); <br></script>

옵션 2: 정규식 사용
작성자: Yueying
코드 :
코드 복사 코드는 다음과 같습니다.

<script> strArr = "()()((()()) "; <br>var o = strArr; <br>var r = o; <br>do{ <br> o = r; <br> r = o .replace(/(([^()]*)) /g,function(s,a){return '[' a ']'}) <br>}while(o!=r); 경고(r) <br></script>
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿