2012-02-22 291 views

回答

4

因爲你想用空字符串,以取代ASCII撇號(或單引號)和引號字符時,究竟是你的源字符串中沒有ASCII字符它不工作。

str.replace(/[「」‘’]/g,''); 

的作品。

+0

謝謝!很好很容易) – dokondr 2012-02-22 19:26:56

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(/ [\ u2018 \ u2019]/g,「#」); 結果: 「‘我不#知道你的#榮耀的意思,#’愛麗絲說」。 – dokondr 2012-02-22 19:22:38

+0

對。你爲什麼把「#」放入替換字符串中?如果你想替換兩種引號,你需要兩次調用'.replace()'。我會更新答案。 – Pointy 2012-02-22 20:03:09

+11

您可以使用以下代碼擴展此腳本,該代碼替換從Word等粘貼時在文本框中獲得的em破折號和省略號:\t \t \t'.replace(/ [\ u2013 \ u2014]/g,' - ') \t \t \t .replace(/ [\ U2026] /克, '...')'' – 2013-03-21 14:07:12

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_(symbol))。因此,雖然上述內容會取代所有精明的引號,但上述內容也會取代任何合法使用的素字符。 – kgryte 2016-10-16 06:34:30

+5

JavaScript字符串沒有'replaceAll'方法。此代碼是用Java編寫的,不能在JavaScript中工作。 – 2016-10-31 18:01:56

相關問題