更换'-';与'--';在JavaScript字符串中

更换'-';与'--';在JavaScript字符串中,javascript,string,Javascript,String,我试图用双破折号替换字符串中的单破折号“-” 2015–09–01T16:00:00.000Z to be 2015-–09-–01T16:00:00.000Z 这是我正在使用的代码,但它似乎不起作用: var temp = '2015–09–01T16:00:00.000Z' temp.replace(/-/g,'--') 在JavaScript中,字符串是不可变的。因此,当您修改字符串时,将通过修改创建一个新的字符串对象 在本例中,replace已替换字符,但返回一个新字符串。您需要

我试图用双破折号替换字符串中的单破折号“-”

2015–09–01T16:00:00.000Z

to be

2015-–09-–01T16:00:00.000Z
这是我正在使用的代码,但它似乎不起作用:

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

在JavaScript中,字符串是不可变的。因此,当您修改字符串时,将通过修改创建一个新的字符串对象

在本例中,
replace
已替换字符,但返回一个新字符串。您需要将其存储在变量中才能使用它

比如说,

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

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

console.log('–'.charCodeAt(0));
// 8211: en dash
console.log('-'.charCodeAt(0));
// 45: hyphen

也许最简单的方法就是使用split和join

var temp = '2015–09–01T16:00:00.000Z'.split("-").join("--");

字符串中的连字符与RegExp中的连字符不同。尽管他们看起来很像,但他们是不同的角色


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

,不仅在JavaScript中,而且几乎在所有主要语言中字符串变量都是不可变的。正如其他答案中所解释的,只有当您拆分的字符与字符串中使用的字符相同时,这才应该起作用。