【问题标题】:String parsing in JavaScript / jQueryJavaScript / jQuery 中的字符串解析
【发布时间】:2011-07-09 08:43:08
【问题描述】:

我有一个类似 url 参数的字符串。如果 insurance 参数在字符串中只出现一次,我想获得 insurance 值。

例如:

1. 以下字符串应产生结果:false

?LastName=abc&FirstName=xyz&insurance=2&insurance=3&insurance=4&insurance=5&BirthDate=01-01-2000

2. 下面的字符串应该会产生结果:2 (因为只有一个保险)

?LastName=abc&FirstName=xyz&insurance=2&BirthDate=01-01-2000

如何在 JavaScript / jQuery 中做到这一点

我感谢每一个答案。谢谢

【问题讨论】:

  • 您在寻找this
  • @alliswell:谢谢。我使用了您提到的问题的最佳答案功能。它返回第一个 insurance 值而不考虑否。 insurance 在字符串中。我只想在字符串中只有一个 insurance 时返回 insurance 值。所以现在我必须添加一个检查字符串中的保险号码。
  • 不客气,使用上面提到的正则表达式或简单的条件检查。
  • 另见Query String Object插件。

标签: javascript jquery string-parsing


【解决方案1】:

这里有一个函数可以做你想做的事情

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];
}

【讨论】:

    【解决方案2】:

    为@meouw +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'));
    

    【讨论】:

    • 关于正则表达式与 string.split 性能的讨论here
    猜你喜欢
    • 2018-03-24
    • 1970-01-01
    • 2011-12-24
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    相关资源
    最近更新 更多