我试图用双破折号替换字符串中的单个破折号' - '字符.
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)
–字符串中的连字符与RegExp中的连字符不同-.即使它们看起来很相似,但它们是不同的角色.
在这种情况下,正确的RegExp是 temp.replace(/–/g,'--')