在JavaScript字符串中将“-”替换为“--”

5

我正在尝试将字符串中的单破折号“-”替换为双破折号。

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,'--')
3个回答

16
在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

不仅在JavaScript中,几乎在所有主要的编程语言中,字符串变量都是不可变的。 - Kamran Shahid

7
你在字符串中使用的连字符字符 与你在正则表达式中使用的连字符 - 是不同的。尽管它们看起来相似,但它们是不同的字符。
在这种情况下,正确的正则表达式是 temp.replace(/–/g,'--')

4

可能最简单的方法就是使用split和join。

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

如其他答案所解释的那样,这只有在您要拆分的字符与字符串中使用的字符相同时才有效。 - Tushar

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