Javascript 替换方法不';行不通
我想将智能引号(如Javascript 替换方法不';行不通,javascript,Javascript,我想将智能引号(如“,”,“和”替换为常规引号。此外,我还想替换)、®和™。我使用了以下代码。但这没用。 请帮我解决这个问题 str.replace(/[“”]/g, '"'); str.replace(/[‘’]/g, "'"); 使用: 或者用一句话来表达: str = str.replace(/[“”]/g, '"').replace(/[‘’]/g,"'"); 在JavaScript中(和许多其他语言一样),字符串是不可变的-字符串“替换”方法实际上只是返回新字符串,而不是原地修改字
“
,”
,“
和”
替换为常规引号。此外,我还想替换)
、®
和™代码>。我使用了以下代码。但这没用。
请帮我解决这个问题
str.replace(/[“”]/g, '"');
str.replace(/[‘’]/g, "'");
使用:
或者用一句话来表达:
str = str.replace(/[“”]/g, '"').replace(/[‘’]/g,"'");
在JavaScript中(和许多其他语言一样),字符串是不可变的-字符串“替换”方法实际上只是返回新字符串,而不是原地修改字符串
forreplace
说明:
返回一个新字符串,该字符串包含替换的模式的部分或全部匹配项
此方法不会更改调用它的字符串对象。它只返回一个新字符串
replace返回结果字符串
str = str.replace(/["']/, '');
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));
}
var s=“”这是一个测试“‘另一个测试’”;
对于(变量i=0;i
我发现所有的智能引号都显示为?=63
因此,对于OP,确定智能引号的起始位置,并确保它们是您期望的字符代码。如果不是,请考虑更改源代码,使它们以<代码> >“=8220 < /COD>,<代码>”=8221 < /代码>,<代码> >=8216 < /代码>和<代码> >=8217 < /代码>。使用我的循环检查源代码,如果智能引号显示的是除我列出的值以外的任何charCodeAt()
值,replace()
将无法按书面方式工作。要使用智能引号替换所有常规引号,我使用了类似的函数。您必须指定字符码,因为某些不同的计算机/浏览器默认设置可能会以不同的方式识别纯字符(“,”,“,”,“)
使用字符码并调用ASCII字符,这将消除不同浏览器和操作系统之间的错误空间。这也有助于双语使用(口音等)。
用单引号替换智能引号
function unSmartQuotify(n){
var name = n;
var apos = String.fromCharCode(39);
while (n.indexOf("'") > -1)
name = name.replace("'" , apos);
return name;
}
要查找您可能需要的其他ASCII值,请检查。另请参见:Jon,我仍然有相同的问题。Babu,我刚刚测试了Jon的代码。它工作正常。您能更具体一点吗?新的代码示例?这是我的代码示例。itemObject.setValue(itemObject.getValue().replace(/[“”]/g,“)。replace(/[“”]/g,“”));它是否适用于其他角色?例如,尝试将X和X替换为Z。这可能是字符编码问题。您在代码中使用什么编码?您的数据使用什么编码?
function unSmartQuotify(n){
var name = n;
var apos = String.fromCharCode(39);
while (n.indexOf("'") > -1)
name = name.replace("'" , apos);
return name;
}