2017-03-03 1 views
0

나는 자바 스크립트에서 샘플 데이터 생성기를 만들었고 출력은 문자열 화 된 json 객체이다. 이제 출력의 각 요소에서 첫 번째/마지막 백 슬래시를 제거해야합니다.처음과 마지막 백 슬래시를 제거 하시겠습니까?

array(\"'This is' a test\",\"Testie Test\",\"Bob the tester\",\"Wanna test "some" more\") 

출력이 필요 :

전류 출력은

array("'This is' a test","Testie Test","Bob the tester","Wanna test \"some\" more") 

내가 이스케이프 인용 더블 텍스트를 필요로하지만 데이터가 그대로 첫 번째와 마지막 백 슬래시를 제거해야 그런 다음 다른 도구로 복사되고 업로드되어이 백 슬래시로 분리됩니다.

난 쉽게 간단한 정규식 모든 백 슬래시를 제거 할 수 있습니다 :

var = var.replace(/\\\\/g,"") 

그러나 그 내부의 텍스트는 더 이상 탈출한다. 이 성공을 위해 더 복잡한 regexes 변형을 시도했다. 어떤 도움을 주셔서 감사합니다.

감사

+2

왜 모든 백 슬래시를 제거 하시겠습니까? JSON은 따옴표를 이스케이프 처리하기 위해 텍스트를 백 슬래시로 인코딩합니다. –

+0

원본 JSON이란 무엇입니까? '{ "name": value, ...}의 형식으로 –

+0

@BitByte 첫 번째/마지막 백 슬래시가이 샘플 데이터를 사용하는 두 번째 도구를 중단하기 때문입니다. 두 번째 도구에 대한 웹 서비스를 만들 수있을 때까지 필요한 단계입니다. – jp17

답변

0

JSON.parse(object)를 사용해보십시오. 파싱 ​​된 전체 객체를 반환해야합니다.

또한 console.log(JSON.parse(object)["data"])은 전체 값을 배열로 인쇄해야합니다.

는 귀하의 의견에 따르면, JSON을 고려하는 것은 너무로 포맷 : {"records": [{"id":"xxxx", "data":["text","text","text",...]},{"id":"xxx", "data":[ ..... ]},...]}

var parsed = JSON.parse(object); 
var output = [] 
for (var i = 0; parsed["records"].length < i; i++) { 
    output.push(parsed["records"][i]["data"]); 
} 
document.getElementById("textareafieldid").value = output; 

이 스크립트 HTML에 정의 된 것과 동일한에서 텍스트 필드의 ID를 설정해야합니다 마십시오.

^\\(.*)\\(")$ 

첫 번째 캡처 그룹이 시작 백 슬래시를 제외한 전체 문자열을 캡처하지만 마지막 qoutes를 캡처하지 않습니다 :

<textarea id='textareafieldid'></textarea> 
+0

출력이 웹 앱의 텍스트 영역으로 이동합니다 .죄송합니다. 자바 스크립트에 익숙하지 않고 이것을 시도 할 때 출력이 없습니다. – jp17

+0

This is browser javascript? 노드 또는 아무것도 실행하지 않습니까? –

+0

예 ... 나는 프로젝트를 PHP로 다시 작성하고 웹 서비스를 작성하는 과정에서 가져 왔지만 자주 사용함에 따라이를 수정해야합니다. – jp17

1

^(\\.)*(\\).$ 바로 마지막 문자 전에 첫 번째 백 슬래시 및 백 슬래시 일치합니다. 당신의 문자열이 \"\"로 시작하고 끝나는 경우 대신으로 정규 표현식의

, 당신은 직접 테스트 할 수 있습니다

if (s.startsWith('\\"') && s.endsWith('\\"')) { 
    clean_s = '"' + s.substr(2, s.length-4) + '"'; 
} 
1

당신은 당신의 문자열을 일치하도록이 정규식을 사용할 수 있습니다. 마지막 qoutes는 그룹 2에서 캡처됩니다. 원하는 출력을 얻기 위해이 두 그룹을 연결할 수 있습니다!

Regex Demo

관련 문제