在JavaScript字符串中将' - '替换为' - '

run*_*ero 5 javascript string

我试图用双破折号替换字符串中的单个破折号' - '字符.

2015–09–01T16:00:00.000Z

to be

2015-–09-–01T16:00:00.000Z
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的代码,但它似乎没有工作:

var temp = '2015–09–01T16:00:00.000Z'
temp.replace(/-/g,'--')
Run Code Online (Sandbox Code Playgroud)

the*_*eye 16

在JavaScript中,字符串是不可变的.因此,当您修改字符串时,将使用修改创建新的字符串对象.

在您的情况下,replace已替换字符但返回一个新字符串.您需要将其存储在变量中才能使用它.

例如,

var temp = '2015–09–01T16:00:00.000Z';
temp = temp.replace(/–/g,'--');
Run Code Online (Sandbox Code Playgroud)

注意您在问题中显示的字符串,在复制时,我意识到它是一个不同的字符,但看起来类似于它,它与hyphen(-)不同.这些字符的字符代码如下

console.log('–'.charCodeAt(0));
// 8211: en dash
console.log('-'.charCodeAt(0));
// 45: hyphen
Run Code Online (Sandbox Code Playgroud)


tec*_*bar 7

字符串中的连字符与RegExp中的连字符不同-.即使它们看起来很相似,但它们是不同的角色.

在这种情况下,正确的RegExp是 temp.replace(/–/g,'--')