2014-12-01 1 views
-1

에 키 - 값 쌍에 파이프로 구분 된 문자열을 구문 분석 방법은 다음과 같습니다나는 자바 스크립트 객체의 키 - 값 쌍으로 문자열의 다음과 같은 종류의 구문을 분석 할 자바 스크립트

var stringVar = 'PLNC||0|EOR|<br>SUBD|Pines|1|EOR|<br>CITY|Fort Myers|1|EOR|<br>'; 

4 자본의 각 단어 (PLNC, SUBD 및 CITY)는 키가되는 반면, 바로 다음 파이프의 단어는 값이됩니다 (첫 번째는 PLNC에 대해 정의되지 않고 SUBD에 대한 값은 ' Pines ', City는'Fort Myers '임).

'| EOR |
'이 모든 키 - 값 쌍 바로 앞에옵니다.

가장 좋은 방법은 무엇입니까?

+1

간단하지 않습니다. 많은 여분의 파이프가있는 것 같습니다. –

+0

네, 그게 내가이 일을하려고 애 쓰고있는 문제 중 하나입니다. – angularPrism

+0

폭발성 | 그런 다음 reg exp로 반복합니다. – Phil

답변

2

기술적으로는 흥미로운 줄 끝이있는 CSV 형식임을 깨달았습니다. 이 변수에는 변수 값에 | 또는 < br>은 문자열의 구조를 정의하는 토큰이기 때문에. 당신은 물론 그들을 벗어날 수 있습니다.

var stringVar = 'PLNC||0|EOR|<br>SUBD|Pines|1|EOR|<br>CITY|Fort Myers|1|EOR|<br>'; 

function decodeString(str, variable_sep, line_endings) 
{ 
    var result = []; 
    var lines = str.split(line_endings); 
    for (var i=0; i<lines.length; i++) { 
     var line = lines[i]; 
     var variables = line.split(variable_sep); 
     if (variables.length > 1) { 
      result[variables[0]] = variables[1]; 
     } 
    } 
    return result; 
} 

var result = decodeString(stringVar, "|", "<br>"); 

console.log(result); 
0

당신은 (underscore이있는 경우 당신은 다음 단지 그들이 밑줄이 다음 조금 놀러

:)을 포함 가지고 있기 때문에, 자신의 웹 페이지에 콘솔을 열어이 시도하지 않는 경우 . 여기에 당신의 여행의 시작이다 :

_.compact(stringVar.split(/<br>|EOR|\|/)) 
0

function parse(str) { 
    var str = str.replace(/<br>/gi); 
    console.log(str); 
    var arr = str.split('|'); 
    var obj = {}; 
    for (var i=0; i<arr.length; i=i+4) { 
     var key = arr[i] || ''; 
     var val_1 = arr[i+1] || ''; 
     var val_2 = arr[i+2] || ''; 
     if(key) { 
      obj[key] = val_1 + ':' + val_2; //or similar 
     } 
    } 
    return obj; 
} 

DEMO

이이 문제의 특정 데이터 문자열에서 작동합니다보십시오.

또한 같은 일반적인 형식의 다른 데이터 문자열에 작동하지만에 의존합니다

:로 구분 4 개 문자열 요소의 그룹 인

  • 모든 레코드를 분석하기 전에 무시할 수있는

    • <br> | (파이프)의 각 레코드
    • 첫 번째 요소는 키
    • 초 및 세 번째 요소
    • 네번째 요소는 무시할 수있는 값을 형성하기 위해 결합된다.
  • 관련 문제