2011-03-05 41 views
2

我有一個像url參數的字符串。我想得到保險價值,如果保險帕拉姆只有一次在字符串。JavaScript中的字符串解析/ jQuery

例如:

1.下面的字符串應當產生結果:

名字= ABC &姓= XYZ &保險= 2 &保險= 3 &保險= 4 &保險= 5 & BirthDate = 01-01-2000

2.以下字符串應該產生的結果: (因爲只有一個保險)

姓氏= ABC &姓= XYZ &保險= 2 &出生日期= 01-01? -2000

如何在JavaScript/jQuery中執行此操作

我很欣賞每一個答案。由於

+1

您正在尋找[this](http://stackoverflow.com/questions/901115/get-querystring-values-with-jquery)? – paragy 2011-03-05 10:38:17

+0

@alliswell:謝謝。我使用了你提到的問題的頂級答案功能。它返回第一個**保險**值,但不考慮no。 **保險**在字符串中。我只想在字符串中只有一個**保險**的情況下返回**保險**值。所以現在我必須在字符串中添加一個保險號。 – Awan 2011-03-05 10:53:55

+0

歡迎您使用正則表達式,或者使用簡單的條件檢查。 – paragy 2011-03-05 11:00:55

回答

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 2011-03-05 11:16:05

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 2011-03-05 11:17:02

+0

+1爲你的努力。謝謝 – Awan 2011-03-05 11:17:26