为了账号安全,请及时绑定邮箱和手机立即绑定

替换方法不起作用

替换方法不起作用

aluckdog 2019-06-01 14:43:52
替换方法不起作用我想替换一些聪明的引号,比如‘, ’, “和”普通的引号。另外,我想替换©, ®和™..我使用了以下代码。但没什么用。请帮我解决这个问题。str.replace(/[“”]/g, '"');str.replace(/[‘’]/g, "'");
查看完整描述

4 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

用途:

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

或者在一份声明中这样做:

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

在JavaScript中(与许多其他语言一样),字符串是不可变的-字符串“替换”方法实际上只是返回新字符串,而不是修改已到位的字符串。

这个MDN JavaScript引用条目replace各国:

返回一个新字符串,该字符串中有一些或全部匹配的模式被替换。

此方法不更改调用的字符串对象。它只是返回一个新字符串。


查看完整回答
反对 回复 2019-06-01
?
绝地无双

TA贡献1946条经验 获得超4个赞

替换返回结果字符串

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


查看完整回答
反对 回复 2019-06-01
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

OP没有说明为什么不工作,但似乎存在与文件编码有关的问题。如果我有ANSI编码的文件,而我有:

var s = "“This is a test” ‘Another test’";s = s.replace(/[“”]/g, '"').replace(/[‘’]/g,"'");document.writeln(s);

我得到:

"This is a test" "Another test"

我把编码转换成UTF-8,修正了智能引号(当我改变编码时,它就坏了),然后转换回ANSI,问题就消失了。

注意,当我在测试文档(ANSI编码)中复制并粘贴此页面上的双智能引号并运行以下代码时:

var s = "“This is a test” ‘Another test’";for (var i = 0; i < s.length; i++) {
    document.writeln(s.charAt(i) + '=' + s.charCodeAt(i));}

我发现所有聪明的引号? = 63.

因此,对于OP,确定智能引号的来源,并确保它们是您期望的字符代码。如果它们不是,请考虑更改源的编码,以便它们以“ = 8220” = 8221‘ = 8216’ = 8217..使用我的循环检查源代码,如果智能引号与任何charCodeAt()除了我列出的价值之外,replace()不会像写的那样工作。


查看完整回答
反对 回复 2019-06-01
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

为了用智能引号替换所有常规引号,我使用了类似的函数。必须指定CharCode,因为某些不同的计算机/浏览器默认设置可能以不同的方式识别普通字符(“、”)。

使用CharCode调用ASCII字符,这将消除不同浏览器和操作系统之间的错误空间。这也有助于双语使用(口音等)。

将智能引号替换为单引号

function unSmartQuotify(n){
    var name = n;
    var apos = String.fromCharCode(39);
    while (n.indexOf("'") > -1)
        name = name.replace("'" , apos);
    return name;}

若要查找您可能需要的其他ASCII值,请执行以下操作。查帐这里.


查看完整回答
反对 回复 2019-06-01
  • 4 回答
  • 0 关注
  • 367 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信