2011-03-19 8 views
41

필드에 HTML 데이터가있는 문자열이 들어있는 데이터베이스에서 데이터를 가져옵니다. 모든 큰 따옴표를 대체하여 parseJSON () 인 jQuery에 사용할 수 있습니다.문자열 내의 모든 큰 따옴표를 바꾸십시오.

details.replaceAll("\"","\\\""); 
    //details.replaceAll("\"","&quote;"); details.replaceAll("\"","&#34"); 

알 lthis 방법을 시도했지만 결과 문자열은 변경 사항을 표시하지 않습니다 .. 내가 사용하는 따옴표를 대체하기 위해 노력하고 자바를 사용. O'reily 기사는 Article 아파치 문자열 유틸리티를 처방합니다. 다른 방법이 있습니까 ??

어떤 정규식이나 다른가요?

답변

76

여기에, 문자열 immutable입니다 그 방법

String details = "Hello \"world\"!"; 
details = details.replace("\"","\\\""); 
System.out.println(details);    // Hello \"world\"! 

주입니다 단순히 details.replace("\"","\\\"")을에 따라서는 충분하지 않다. 결과 문자열에 변수 details을 재 할당해야합니다.

details = details.replaceAll("\"","&quote;"); 

대신,

Hello &quote;world&quote;! 
+7

하나는 불변이다 *. –

+0

+1 문자열을 잊었습니다. –

5

정규식은이 상황에서 조금 과잉이라고 생각합니다. 당신이 당신의 문자열에있는 모든 따옴표를 제거하려면이 코드를 사용합니다 :

details = details.replace("\"", ""); 
4

의 결과는 JSON에서 작동하려면 사용


, 당신은보다 몇 문자를 이스케이프해야합니다. 당신이 그것을 구문 분석 json2.js를 사용할 수 있도록하기 위해서는

myString.replace("\\", "\\\\") 
    .replace("\"", "\\\"") 
    .replace("\r", "\\r") 
    .replace("\n", "\\n") 

은 다음 당신은 또한 JSON 인용 문자열 안에 있습니다

.replace("\u2028", "\\u2028") 
    .replace("\u2029", "\\u2029") 

을 탈출해야하지만 어떤 자바 스크립트를하지 않습니다. 대체 문자열에서

.replaceAll("\"","\\\\\"") 

다섯 백 슬래시 :

+0

jquery 1.5를 사용하고 있습니다.이 모든 것을 요구합니까? – MalTec

+0

@MalTec, 문자열에 백 슬래시가 포함될 수 있다면 그렇습니다. 당신의 문자열이''\\ " ''인 경우를 생각해 보자. 따옴표로 싸서 따옴표 만 이스케이프하면'"\\ ""'이 유효하지 않은 문자열이다. 문자열에 개행 문자가 포함될 수 있다면 그 문자도 이스케이프 처리해야합니다. 줄 바꿈은 JQuery에서 문자열 안에 허용되지 않습니다. –

24

는해야하지 않을 것이라고.

+4

예, replaceAll()을 사용한다면 올바른 방법입니다. 그래서 모든 사람들이 대신에'replace()'를 사용하려고합니다. ;) –

+0

그냥'replaceAll()'이 왜 작동하지 않는지를 알아 내는데 더 많은 시간을 보냈습니다. 완전히 replace() 메소드도 있다는 것을 잊어 버렸습니다. – Ben

+3

replaceAll()을 사용하여 replace() 대신 백 슬래시를 5 개 사용하는 이유는 무엇입니까? – Ida

3

나는 이미 여기에서 답변을 받았다는 것을 알고 있지만, 큰 따옴표와 작은 따옴표를 벗어나려고 할 때 찾은 것을 공유하고 싶었습니다. 이 작품 :)

따옴표 탈출 :

if(string.contains("\"")) { 
     string = string.replaceAll("\"", "\\\\\""); 
    } 

작은 따옴표 탈출 :

if(string.contains("\'")) { 
     string = string.replaceAll("\'", "\\\\'"); 
    } 

PS를 여기

내가 한 일입니다 : 위에 사용 된 백 슬래시 수를 확인하십시오.

2

문자열의 큰 따옴표를 제거합니다.

str1 = str.replace(/"/g, ""); 
alert(str1); 
+0

OP가 자바에 대한 답변을 원했습니다. –

0

다음 정규식은 모두 작동합니다 : * 문자열에 대한

text = text.replaceAll("('|\")", "\\\\$1"); 
관련 문제