繁体   English   中英

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

[英]How to replace curly quotation marks in a string using Javascript?

我正在尝试替换大引号:

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

使用:

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

为什么它不起作用? 我怎样才能做到这一点?

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

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

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

编辑- 从而完全替换所有花哨的引号:

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

它不起作用,因为您试图用空字符串替换 ASCII 撇号(或单引号)和引号字符,而实际上源字符串中的内容不是 ASCII 字符。

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

作品。

结合PointyWooble 的答案,如果您想用常规引号替换大引号:

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

例如:

 str = '“I don't know what you mean by 'glory,' ” Alice said.'; str = str.replace(/[“”]/g, '"').replace(/['']/g, "'"); console.log(str)

我知道这是一个老问题。 只想添加一些东西。 您要替换的引号称为“智能引号”。

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

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

希望这有助于某人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM