如何使用Javascript替换字符串中的曲线引号?

时间:2012-02-22 19:07:04

标签: javascript replace

我正在尝试替换引号:

str = '“I don’t know what you mean by ‘glory,’ ” Alice said.';

使用:

str.replace(/['"]/g,'');

为什么它不起作用?我怎么能这样做?

4 个答案:

答案 0 :(得分:48)

您可能必须(或更喜欢)使用Unicode转义符:

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

这是有趣的单引号;双引号的代码是201C和201D。

编辑 - 从而完全取代所有花哨的引号:

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

答案 1 :(得分:3)

它不起作用,因为您尝试替换ASCII撇号(或单引号)并使用空字符串引用字符,而源字符串中的实际内容不是&#39 ; t ASCII字符。

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

作品。

答案 2 :(得分:0)

现在有了一个名为“ SmartQuotes”的库,它将正确地用漂亮的印刷者的智能引号替换标准编码器的引号/撇号-比使用更简单的搜索和替换更好开/关正确。

答案 3 :(得分:-2)

我知道这是一个老问题。只想添加一些东西。 您尝试替换的报价称为"智能报价"。

以下功能涵盖了大部分内容

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;
}

希望这有助于某人。