更换'-';与'--';在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中,而且几乎在所有主要语言中字符串变量都是不可变的。正如其他答案中所解释的,只有当您拆分的字符与字符串中使用的字符相同时,这才应该起作用。