2016-01-17 2 views
5

Я пытаюсь заменить один символ «-» в строке с двойными штрихами.Заменить '-' на '-' в строке JavaScript

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,'--') 

ответ

16

В JavaScript Строки неизменны. Таким образом, при изменении строки, новый строковый объект будет создан с модификацией.

В вашем случае replace заменил символы, но возвращает новую строку. Вам нужно сохранить это в переменной, чтобы использовать его.

Например,

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

Примечание Строка, которую вы показали в этом вопросе, при копировании, я понял, что это different character, но похож на и это не такой же как дефис (-). Коды символов для этих символов следующие:

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

Не только в JavaScript, но почти во всех основных языках строковые переменные являются неизменяемыми. –

4

Возможно, проще всего просто использовать разделение и присоединиться.

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

Как объясняется в других ответах, это должно работать только тогда, когда персонаж, который вы разделяете, тот же, что и в строке. – Tushar

7

Дефис характер у вас есть в строке отличается от той, которую вы в RegExp -. Хотя они похожи друг на друга, они разные персонажи.

Правильный RegExp в этом случае temp.replace(/–/g,'--')

Смежные вопросы