如何从字符串中拆分密钥对相等的值?

时间:2013-10-02 10:45:14

标签: javascript

这是我的回复字符串

  

var resp =" atoken ##Wed Oct 02 03:24:09 PDT 2013   AUTHTOKEN = 1a26625dfcc94fb07eacd4a77c7595ee RESULT = TRUE";

我希望按AUTHTOKEN的键获取值。

2 个答案:

答案 0 :(得分:2)

使用正则表达式

resp.match(/.* (AUTHTOKEN=(.*)) .*/);
var authToken= RegExp.$2;

虽然我的比赛有点矫枉过正

编辑 JS中的Regexp说明

上面的正则表达式使用组(由parens标识)。在匹配上执行正则表达式时,RegExp类将保留上次执行的组。第1组,第2组等

在上述情况下,表达式将生成以下组

第1组:AUTHTOKEN = 1a26625dfcc94fb07eacd4a77c7595ee 第2组:1a26625dfcc94fb07eacd4a77c7595ee

假设我可以使用表达式

/.* AUTHTOKEN=(.*) .*/

哪会把执行的匹配放在RegExp。$ 1

This article将为您提供有关JavaScript和正则表达式的更多信息。

答案 1 :(得分:1)

这个不使用正则表达式,它使用Array.every方法。

var resp = "atoken # #Wed Oct 02 03:24:09 PDT 2013 AUTHTOKEN=1a26625dfcc94fb07eacd4a77c7595ee RESULT=TRUE", token;
resp.split(" ").every(function(currentValue) {
    var pair = currentValue.split("=");
    if (pair.length === 2) {
        if (pair[0] === "AUTHTOKEN") {
            token = pair[1];
            return false;
        }
    }
    return true;
});

console.log(token);

<强>输出

1a26625dfcc94fb07eacd4a77c7595ee

修改

对于这种情况,在我的机器上,RegEx解决方案表现良好。 http://jsperf.com/search-in-key-value-pairs