2012-02-22 3 views

답변

4

소스 문자열에 실제로 ASCII 문자가 아닌 경우 ASCII 아포스트로피 (또는 작은 따옴표)와 따옴표 문자를 빈 문자열로 바꾸려고하기 때문에 작동하지 않습니다.

str.replace(/[“”‘’]/g,''); 

작품입니다.

+0

감사합니다. 좋고 쉬운) – dokondr

36

당신이 (또는 선호) 유니 코드를 사용할 수는 탈출 :

재미 따옴표를 위해입니다
var goodQuotes = badQuotes.replace(/[\u2018\u2019]/g, "'"); 

; 큰 따옴표에 대한 코드는 201C와 201D입니다.

편집 — 따라서 완전히 모든 멋진 따옴표를 대체 :

var goodQuotes = badQuotes 
    .replace(/[\u2018\u2019]/g, "'") 
    .replace(/[\u201C\u201D]/g, '"'); 
+0

>>> str.replace (/ [\ u2018]/g, "#"); 검색 결과 : ""나는 영광으로 무엇을 의미하는지 알지 못합니다. "# 앨리스가 말했다. – dokondr

+0

오른쪽. 왜 대체 문자열에 "#"을 넣었습니까? 두 종류의 따옴표를 모두 바꾸려면'.replace()'를 두 번 호출해야합니다. 나는 대답을 업데이트 할 것이다. – Pointy

+11

이 스크립트를 다음과 같이 확장하면 Word 등에서 붙여 넣을 때 텍스트 상자에있는 em 대시와 타원을 바꿀 수 있습니다. \t \t \t'.replace (/ [\ u2014]/g, '-') \t \t \t .replace (/ [\ u0026/g, '...') ' –

0

나는이 오래된 질문 알아요. 그냥 뭔가 추가하고 싶습니다. 바꾸려고하는 따옴표를 "스마트 따옴표"라고합니다.

아래의 기능이 누군가를하는 데 도움이

public static String replaceSmartQuotes(String str) { 
    String retVal = str; 
    retVal = retVal.replaceAll("[\u2018\u2019\u201A\u201B\u2032\u2035]", "'"); 
    retVal = retVal.replaceAll("[\u201C\u201D\u201E\u201F\u2033\u2036]","\""); 
    return retVal; 
} 

대부분 희망을 다룹니다.

+2

'\ u2032, \ u2033, \ u2035, \ u2036'은 ** 스마트 쿼트가 아닙니다. 그것들은 소수이고 완전히 다른 [목적] (https://en.wikipedia.org/wiki/Prime_ (기호))에 사용됩니다. 따라서 위의 내용이 모든 스마트 인용 부호를 대체하지만 위의 내용은 프라임 문자의 합법적 인 사용을 대체합니다. – kgryte

+5

JavaScript 문자열에는 replaceAll 메소드가 없습니다. 이 코드는 Java로 작성되었으며 JavaScript에서는 작동하지 않습니다. –

관련 문제