JavaScript / jQuery 中的字符串解析

发布于 2024-10-20 13:54:16 字数 598 浏览 2 评论 0原文

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

例如:

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

?LastName=abc&FirstName=xyz&insurance=2&insurance=3&insurance=4&insurance=5&出生日期=01-01-2000

2. 以下字符串应产生结果: 2 (因为只有一份保险)

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

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

我很欣赏每个答案。谢谢

I have a string like url params. I want to get insurance value if insurance param comes only one time in string.

For example:

1. Following string should produce result: false

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

2. Following string should produce result: 2 (because only one insurance)

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

How can I do this in JavaScript / jQuery

I appreciate every answer. Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小情绪 2024-10-27 13:54:16

这是一个可以完成您想要的功能的函数

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

Here's a function that will do what you want

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];
}
格子衫的從容 2024-10-27 13:54:16

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

+1 for @meouw - neat solution!

An alternative would be to use string.split. The following implementation is flexible about the param you are searching for and its value (i.e. any string).

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'));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文