0

这是我的响应字符串

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

我想按AUTHTOKEN.

4

2 回答 2

2

使用正则表达式

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

不过我的比赛有点矫枉过正

编辑JS 中正则表达式的解释

上面的正则表达式使用组(由括号标识)。当对匹配项执行正则表达式时,RegExp 类会保留上次执行的组。第 1 组、第 2 组等

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

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

假设,我可以使用这个表达式

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

这会将执行的匹配放在 RegExp.$1

本文将为您提供比我在此处提供的更多关于 JavaScript 和正则表达式的信息。

于 2013-10-02T10:49:50.690 回答
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

于 2013-10-02T13:22:50.543 回答