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

dok*_*ndr 19 javascript replace

我想替换卷曲引号:

str = '“I don’t know what you mean by ‘glory,’ ” Alice said.';
Run Code Online (Sandbox Code Playgroud)

使用:

str.replace(/['"]/g,'');
Run Code Online (Sandbox Code Playgroud)

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

Poi*_*nty 52

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

var goodQuotes = badQuotes.replace(/[\u2018\u2019]/g, "'");
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 您可以使用以下内容扩展此脚本,它将替换从Word等粘贴时在文本框中获得的短划线和椭圆:`.replace(/ [\ u2013\u2014]/g,' - ').replace(/ [\/ g,'...')` (15认同)

Woo*_*ble 5

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

\n\n
str.replace(/[\xe2\x80\x9c\xe2\x80\x9d\xe2\x80\x98\xe2\x80\x99]/g,'');\n
Run Code Online (Sandbox Code Playgroud)\n\n

作品。

\n