使用 JavaScript 替换字符串中的未知特殊字符

3
我有一个包含特殊字符(称为em-dash)的字符串。我想使用JavaScript在Windows和Linux中替换该字符。
在Windows中,以下方法能够成功实现替换:
mystring.replace(/—/, "-");

在Windows系统中,这个字符 em-dash可以正常显示。但是在Linux系统中,它会被显示成一个带有问号的黑色菱形�。

我该如何匹配并替换这个字符为其他字符呢?

\u2014 = em-dash unicode表示em-dash字符的Unicode编码。

let string = 'SampleTestcase—Temp';

if (string.match("\u2014")) {
     console.log("YES ITS MATCHED and its Em-dash");
     string = string.replace("\u2014", "-");
}

console.log(string);

我期望的输出是SampleTestcase-Temp

此外,为什么Linux会将em-dash显示为带有问号的黑色钻石,有时又像逗号一样显示?


1
你是用什么应用程序在Linux中查看这个字符的? - melpomene
1
当您想要替换字符串中的em-dash时,无需检查字符串中是否存在它。只需使用 string = string.replace(/\u2014/g, '-') 即可。实际上,Melpomene的问题非常相关:您如何在Linux中显示内容?工具?选项? - Wiktor Stribiżew
我觉得你的字符串使用了两种不同的编码。 - user732456
在Linux上使用相同的代码,它将正常工作,即使显示方式不同(可能是字体问题)。 - ponury-kostek
1个回答

0

只需跳过引号,将Unicode传递给正则表达式参数(在//之间),并使用g标志:

console.log('SampleTestcase———————Temp'.replace(/\u2014/g, '-'));


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接