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の正規表現のEDIT説明

上記の正規表現は、グループ (括弧で識別) を利用しています。一致に対して正規表現が実行されると、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 に答える