2011-01-31 1 views
3

내가 문자열을 말해봐 자바 스크립트 paramaterized 문자열의 제한 값 :구문 분석과 같은

var map = "/directory/:id/thumbnails/:size"; 

그리고 다른 문자열 (기본적으로, 레일이 같은 일이 경로를 정의하는 데 사용에 대해 매핑하는 것을 사용할), 같은 :

var str = "/directory/10/thumbnails/large"; 
내가 두 문자열을 "비교", 어느 내 위의 예에서, map에 매핑 str의 부분을 나타내는 키 - 값 쌍 또는 JSON 개체를 반환하고 싶은

, 다음과 같이 표시됩니다 :

obj = { 
    'id' : '10', 
    'size' : 'large' 
} 

JavaScript Regex에 적합합니까? 누구든지 나를 도울 수 있습니까?

+0

서버 측 언어 대신 javascript를 사용하여 그럴만한 이유가 있습니까? – yoda

+0

라우팅에 실제로 사용하지는 않았지만 모든 사람들이 잘 알고 있기 때문에 가장 편리한 예제였습니다. –

+0

예, 가능합니다. 정규 표현식을 사용하여지도를 정규 표현식으로 변환 한 다음 해당 정규 표현식을 사용하여 문제의 문자열을 구문 분석 할 수 있습니다. –

답변

2

내가 설명하는 것보다 :)

var map = "/directory/:id/thumbnails/:size"; 
var str = "/directory/10/thumbnails/large"; 

var obj = {}; 

var mapArr = map.split('/'); 
var strArr = str.split('/'); 

if (mapArr.length != strArr.length) return false; 

for (var i = 0; i < mapArr.length; i++) 
{ 
    var m = mapArr[i]; 
    var s = strArr[i]; 

    if (m.indexOf(":") != 0) continue; 

    m = m.substring(1);  
    obj[m] = s; 
    document.write(m + " = "); 
    document.write(obj[m]); 
    document.write("<br/>"); 
} 

을 쉽게 당신이 여기 행동에서 볼 수있는이에 대한 코드를 작성하는 것으로 확인 =>http://jsfiddle.net/5qFkb/

질문이 있는지 물어 않습니다, 그러나 그 코드는 자명하다. 또한 평상시 널 체크와 내가 보통 넣을 물건이 없다는 것을 명심하십시오. 이것은 개념의 신속하고 더러운 증거로서 의미가 있습니다.

아, 내 대답에서 분명하지 않은 경우. 아니, 정규식을 사용하지 않을 것입니다. 왜냐하면 정규식 대신 두 가지 문제가 생기기 때문입니다.

관련 문제