2011-03-05 2 views
2

У меня есть строка, такая как url ​​params. Я хочу получить страхование значение, если страхование Параметр приходит только один раз в строке.Разбор строк в JavaScript/jQuery

Например:

1. После строки должны производить результат:? ложных

ЬазШат = аЬс & FirstName = хуг & страхования = 2 & страхование = 3 & страхования = 4 & страхование = 5 & Дата рождения = 01-01-2000

2. После строки должна производить результат: (потому что только один страховые)

LastName = а & FirstName = А & страхования = 2 & РОЖДЕНИЯ = 01-01? -2000

Как это сделать в JavaScript/jQuery

Я ценю каждый ответ. Благодаря

+1

Вы ищете [это] (http://stackoverflow.com/questions/901115/get-querystring-values-with-jquery)? – paragy

+0

@alliswell: Спасибо. Я использовал функцию ответа верхнего ответа, о которой вы говорили. Он возвращает первую ** стоимость страхования ** без учета отсутствия. ** страхования ** в строке. Я хочу вернуть ** страховую ** стоимость только тогда, когда в строке есть только одна ** страховка **. Так что теперь я должен добавить чек для страховки в строке. – Awan

+0

приветствуется, и используйте регулярное выражение, как он упоминал, или просто условная проверка будет работать. – paragy

ответ

4

Вот функция, которая будет делать то, что вы хотите

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 для @meouw - изящное решение!

Альтернативой может быть использование 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

Существует обсуждение регулярных выражений и производительности string.split [здесь] (http://stackoverflow.com/questions/966697/performance-question-string-split-and-then-walk-on-the-array-or -regexp) – johnhunter

+0

+1 для ваших усилий. благодаря – Awan

Смежные вопросы