2012-02-22 8 views

答えて

4

ソースの文字列に実際にASCII文字でないものがある場合、ASCIIアポストロフィ(一重引用符)と引用符を空の文字列に置き換えようとしているため、動作しません。

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

作品。

+0

ありがとうございます!素敵で簡単) – dokondr

36

あなたがしなければならない(またはすることを好む)のUnicode使用することがありますがエスケープ:

面白い単一引用符のためだ
var goodQuotes = badQuotes.replace(/[\u2018\u2019]/g, "'"); 

。二重引用符のコードは201Cと201Dです。

編集 —ので、完全にすべて派手な引用符を置き換えるために:

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

>>> str.replace(/ [\ u2019]/g、 "#"); 結果: "「栄光が何を意味するのか分かりません」#「アリスは言った」 – dokondr

+0

なぜあなたは "#"を置換文字列に入れましたか?両方の種類の引用符を置き換えたい場合は、 '.replace()'を2回呼び出す必要があります。私は答えを更新します。 – Pointy

+11

このスクリプトを拡張すると、Wordなどから貼り付けるときにテキストボックスに表示されるemダッシュと楕円を置き換えます。\t \t \t .replace(/ [\ u2013 \ u2014]/g、 ' - ') \t \t \t .replace(/ [\ u0026]/g、 '...') ' –

0

私はこれが古い質問です知っています。ちょうど何かを追加したい。 置き換えようとしている引用符を「Smart Quotes」といいます。

以下の機能が、これは誰かに役に立てば幸い

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では動作しません。 –

関連する問題