2013-03-27 3 views
0

다른 작업을 수행하기위한 조건을 작성 중입니다. 예를 들어, 문자열이 Case 1, "/ Livestock"이면 "task one"을 인쇄하십시오. 사례 2, "/ Livastock /"+ 끝에 다른 것을 쓰고 "작업 2"를 출력하십시오. 그렇지 않으면 "작업 3"을 인쇄하십시오. .test()를 사용하여 정규식을 검사하는 것처럼 보이지만 switch 문에 넣는 방법은 무엇입니까?문자열에 끝 부분에 무언가가 있는지 확인하는 방법

+3

if/else if/else 구문을 대신 사용하십시오 ... – Lucas

+1

정규식과 switch 문이 실제로 함께 작동하지 않습니다. – Daedalus

답변

0

$은 문자열 끝 (또는 RegEx에서 특정 스위치를 사용하는 경우 줄 끝)을 나타냅니다.

var ends_w_livestock = /\/Livestock\/?$/, 
    continues_after_livestock = /\/Livestock\/[^?#]+/; 

이제 "/ 가축"또는 "/ 가축 /"으로 끝나는 URL을 테스트 할 수 있습니다.
두 번째는 "/ 가축 /"을 포함하지만 이후에 문자가 하나 이상 있어야 URL을 테스트 할 수 있습니다. 또는 "#".

그런 다음 if 또는 ternary 할당 또는 원하는 작업을 사용하여 각각을 테스트하십시오.

+0

챔피언처럼 일했습니다. Thx 힙. – Alex

1

질문을 명확하게 설명하지 않았습니다.

var flag=str=="Livestock"?1:str.search(/^Livestock/)==0?2:3; 

지금 플래그가 당신이 당신의 switch 문에서 그것을 확인할 수 있도록 1, or 2 or 3이 있습니다 그래서

case1: "task one", str=="Livestock" 
case2: "task two", str starts with "Livestock" and there are something after it. 
case3: "task three", not in above two cases 

에 문자열 (var str는) 다음 수 있다고 가정합니다.

질문을 잘못 이해 한 경우 답을 수정할 수 있는지 의견을 남기십시오.

+0

그래, 그게 내가 의미했던거야. 나는 if 문을 사용하여 효과를 얻었습니다. 정말 고마워. – Alex

+0

두 번째 부분에서는 /^Livestock/.test(str)가 약간 더 빠르거나 저렴합니다. –

관련 문제