2011-03-05 76 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