2013-10-02 2 views
0

가 여기 내 응답 문자열문자열에서 키 쌍 동일 값을 분리하는 방법은 무엇입니까?

var에 인공 호흡기입니다 = "# #Wed 10월 2일 태평양 서머 타임 03시 24분 9초 2013 authToken에 = 1a26625dfcc94fb07eacd4a77c7595ee의 결과 = TRUE atoken";

AUTHTOKEN 키로 값을 받고 싶습니다.

+0

누가 응답을 생성했는지 확인하려면 해당 용도로 'JSON'을 사용하십시오. – vikingmaster

+0

라인에서 분할하고, 공백으로 분할하고, 등호로 분할 한 다음 키 'AUTHTOKEN'로 쌍을 찾습니다. – Bergi

답변

2

사용 정규식

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

내 경기는 JS

정규 표현식에서 정규 표현식의

편집 설명은 위 그룹을 활용하지만 과잉 (괄호로 식별) 조금이다. 정규식이 일치 항목에서 실행되면 RegExp 클래스는 마지막 실행 그룹을 유지합니다. 상기의 경우 발현은 다음 그룹

그룹을 생성 할 것이다 1 족, 기타 등 2 군

1 : authToken에 = 1a26625dfcc94fb07eacd4a77c7595ee 그룹 2 : 1a26625dfcc94fb07eacd4a77c7595ee

꼽은는 I가 사용하고 있었던 표현

정규식에서 실행의 경기를 넣어 것
/.* AUTHTOKEN=(.*) .*/ 

. $ (1)

This article은 JavaScript 및 정규 표현식에 대한 정보보다 훨씬 많은 정보를 제공합니다.

+0

+1 클래스로 RegExp가 $ 2와 같은 속성을 갖는 방법에 대해 설명해 주시겠습니까? – Marwan

+0

나는 자바 스크립트와 함께 일하고 그 비밀을 발견하기를 좋아한다. – Marwan

+1

'. *'은 필요 없다. 후행하는'. *'는'RESULT = true'가 match 배열에 포함되지 않도록 단지 필요합니다. – asafreedman

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 

편집 :이 경우를 들어

는 내 컴퓨터에서, 정규식 솔루션을 잘 수행한다. http://jsperf.com/search-in-key-value-pairs

관련 문제