2010-02-16 4 views
2

내 자바 스크립트 멀리 내 서버에 ajaxes 및 [49]의 일반 텍스트 형식으로 49의 ID를 반환하면 내가 이런 식으로 뭔가를 할 수있는 방법은 ...와일드 카드로 Javascript switch 문을 사용 하시겠습니까?

switch(data) 
{ 
    case '[*]': 
     (..etc.) 
    break; 
} 
이 (내가 테스트 나던 작업 한)입니다

여기서 와일드 카드는 *이며 두 개의 괄호 안에 포함되어 있는지 확인하고 싶습니다.

다른 단어가 error처럼 돌아 오지 않았는지 확인해야하고 예기치 않은 오류, 어떤 아이디어가 있는지 default을 예약하고 있습니까? :) 감사!

+0

Tracker1의 대답은 정말 질문의 제목을 고려하여 올바른해야합니다 @. –

답변

0

일치하는 와일드 카드 패턴에 if elseregex을 사용할 수 있습니다.

data = "[49]"; 또는 대괄호 안에있는 숫자를 사용하십시오.

if(/\[\d+\]/.test(data)){ 
    //do something 
}else{ 
    //default 
} 
+0

방금 ​​데이터를 var에 저장 한 다음 데이터가 다른 경우 다른 데이터로 설정 함;) 건배 – tarnfeld

0

짧은 대답 : 아니오, 스위치/케이스는 와일드 카드를 처리 할 수 ​​없습니다.

스위치를 입력하기 전에 사전 처리/온 전성 검사를 수행하거나 간소화 된 데이터를 처리하는 것이 아니라 특정 사례 시나리오에 더 적합하므로 스위치를 입력하기 만하면됩니다. Regexp가 여기서 당신을 더 잘 섬길 것입니다.

+1

예, 이전 게시물을 볼 수 있습니다 ... 실제로 스위치에 대해 true를 처리 한 다음 각 경우를 평가할 수 있습니다 . 다른 언어의 case 문처럼 고정 된 값일 필요는 없습니다. – Tracker1

+0

woot! 좋은 하나, 그것에 대해 몰랐다. –

9

명시 적으로 true로 전환 할 수 있습니다. 각 case 문에 대한 평가가 사용됩니다.

그러나 4-5 가지 경우보다 적다면 if/else if/else if/else 블록을 사용하는 것이 좋습니다.

if ((/^\[\d+\]$/).test(data)) { 
     //matches data; 
} else if (data == "something else") { 
     //... 
} else { 
     //... 
}

나는 보통 서비스에 대한 나의 응답 방법에 트래핑 일부 오류가/나머지는 오류가 있으면 나는 거의 항상 오류 속성을 적절한 JSON을 반환 너무 호출 할.

1

패턴 및 관련 콜백 목록을 만들고 간단한 루프를 수행하여 일치하는지 확인할 수 있습니다. 다음과 같은 출력

var patterns = []; 

    function myCallback(){ document.write('myCallback!'); } 
    function myOtherCallback(){ document.write('myOtherCallback!'); } 
    function myLastCallback(){ document.write('You will never see me!'); } 

    patterns.push({'pattern':new RegExp(/\[.+\]/),'callback': myCallback}); 
    patterns.push({'pattern':new RegExp(/.+/),'callback':myOtherCallback}); 
    patterns.push({'pattern':new RegExp(/A-Z{3}/),'callback':myLastCallback}); 

    var f = "[49]"; 
    for(var i=0;i<patterns.length;i++){ 
     if(patterns[i].pattern.test(f)){ 
      patterns[i].callback(); 
     } 
    } 

: 예를 들어

myCallback!myOtherCallback! 
관련 문제