2011-03-05 5 views
2

url params와 같은 문자열이 있습니다. 나는 보험 값을 얻고 싶다면 보험 param은 문자열에 한 번만옵니다. 예를 들어JavaScript/jQuery에서 문자열 파싱

:

1 결과를 생산해야 문자열 다음은? 거짓

성 = ABC & FIRSTNAME는 = XYZ & 보험 = 2 & 보험 = 3 & 보험 = 4 & 보험 = 5 & 생년월일 = 01-01-2000

2 다음 문자열은 결과를 생성해야합니다 2(때문에 단 하나의 보험)

성 = ABC & FIRSTNAME가 XYZ & 보험 = 2 & 생년월일 = = 01-01? -2000

어떻게하면 JavaScript/jQuery에서 할 수 있습니까

모든 대답에 감사드립니다. 깔끔한 솔루션을 - 감사

+1

[this (http://stackoverflow.com/questions/901115/get-querionsring-values-with-jquery)? – paragy

+0

@alliswell : 감사합니다. 나는 당신이 언급 한 질문의 상위 대답 기능을 사용했습니다. 첫 번째 ** 보험 ** 가치를 반환하지 않고 반환합니다. ** 보험 **의 문자열. ** 하나의 ** 보험 **이 문자열에만있는 경우에만 ** 보험 ** 값을 반환하고 싶습니다. 그래서 지금은 문자열의 보험 번호에 대한 수표를 추가해야합니다. – Awan

+0

당신은 환영하고, 언급 한대로 정규식을 사용하거나 간단한 조건부 검사가 작동합니다. – paragy

답변

4

다음은 @meouw에 대한

function checkInsurance(queryString) { 
    // a regular exression to find your result 
    var rxp = /insurance=(\d+)/gi 
    if(!queryString.match(rxp) || queryString.match(rxp).length !== 1) { 
     // if there are no matches or more than one match return false 
     return false; 
    } 
    // return the required number 
    return rxp.exec(queryString)[1]; 
} 
+0

감사합니다. 그것은 효과가있다. – Awan

1

+1 싶은 일을하는 함수입니다!

다른 대안은 string.split을 사용하는 것입니다. 다음 구현은 검색하려는 매개 변수와 그 값 (즉, 문자열)에 대해 유연합니다.

function getUniqueParam (query, paramName) { 
    var i, row, result = {}; 

    query = query.substring(1); 
    //split query into key=values 
    query = query.split('&'); 


    for (i = 0; i < query.length; i++) { 
     row = query[i].split('='); 

     // if duplicate then set value to false; 
     if(result[row[0]]) { 
      result[row[0]] = false; 
     } 
     else { 
      result[row[0]] = row[1]; 
     } 

    }; 

    // return the requested param value 
    return result[paramName]; 
} 


// Testing: 

var a = '?LastName=abc&FirstName=xyz&insurance=2&insurance=3&insurance=4&insurance=5&BirthDate=01-01-2000'; 
var b = '?LastName=abc&FirstName=xyz&insurance=2&BirthDate=01-01-2000'; 

console.log(getUniqueParam(a, 'insurance')); 
console.log(getUniqueParam(b, 'insurance')); 
+0

regex 대 string.split 성능에 대한 설명이 있습니다 [여기] (http://stackoverflow.com/questions/966697/performance-question-string-split-and-then-walk-on-the-array-ororor -regexp) – johnhunter

+0

당신의 노력에 +1. 감사 – Awan