Как я могу заменить все вхождения доллара ($) на подчеркивание (_) в JavaScript? - PullRequest
25 голосов
/ 12 марта 2010

Как следует из заголовка, мне нужно связать все вхождения знака $ в строковой переменной с подчеркиванием.

Я пробовал:

str.replace(new RegExp('$', 'g'), '_');

Но это не работает для меня, и ничто не заменяется.

Ответы [ 4 ]

47 голосов
/ 12 марта 2010

$ в RegExp - это специальный символ, поэтому вам нужно экранировать его обратной косой чертой.

new_str = str.replace(new RegExp('\\$', 'g'), '_');

однако в JS вы можете использовать более простой синтаксис

new_str = str.replace(/\$/g, '_');
8 голосов
/ 12 марта 2010

Вам не нужно использовать RegExp. Вы можете использовать буквальный синтаксис:

str.replace(/\$/g, '_')

Вам просто нужно экранировать символ $, так как он является специальным символом в регулярных выражениях, отмечающим конец строки.


Редактировать О, вы также можете использовать split и join для решения этой проблемы:

str.split("$").join("_")
1 голос
/ 12 марта 2010

........

str.replace(new RegExp('\\$', 'g'), '_');

Becaue $ - это специальный символ в js, вам нужно убежать от него.

0 голосов
/ 12 марта 2010

Вам не нужны регулярные выражения только для замены одного символа:

 newStr = oldStr.replace('$', '_')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...