Как указано в заголовке, мне нужно связать все вхождения знака $ в строковой переменной с символом подчеркивания.
Я попытался:
str.replace(new RegExp('$', 'g'), '_');
Но это не работает для меня, и ничего не заменяется.
Как указано в заголовке, мне нужно связать все вхождения знака $ в строковой переменной с символом подчеркивания.
Я попытался:
str.replace(new RegExp('$', 'g'), '_');
Но это не работает для меня, и ничего не заменяется.
$
в RegExp - специальный символ, поэтому вам нужно избежать его с обратной косой чертой.
new_str = str.replace(new RegExp('\\$', 'g'), '_');
однако, в JS вы можете использовать более простой синтаксис
new_str = str.replace(/\$/g, '_');
........
str.replace(new RegExp('\\$', 'g'), '_');
Becaue $
специальный символ в JS, что вам нужно, чтобы избежать его.
В вторая неверна в двух подсчетах, она заменит '\ $', а не '$', и она заменит только 1 вхождение, а не несколько. –
@ Andy: Да, осознал это и вскоре удалил :) Спасибо – Sarfraz
Вам не нужно использовать RegExp
. Вы можете использовать синтаксис литерала:
str.replace(/\$/g, '_')
Вам просто нужно, чтобы избежать $
характера, как это специальный символ в регулярных выражениях, отмечающий конец строки.
Редактировать О, вы также можете использовать split
и join
, чтобы решить эту проблему:
str.split("$").join("_")
Как идея разделения и объединения - как быстро это происходит по сравнению с регулярным выражением? –
Вам не нужны регулярные выражения просто заменить один символ:
newStr = oldStr.replace('$', '_')
Название указано «все». – kennytm
https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/String/replace – user187291
Это заменит только первое вхождение символа, а не «все» вхождения. Пожалуйста, удалите этот ответ, поскольку это явно неправильно – edc65
+1, идите на литерал, не беспокойтесь о конструкторе, если вам не нужно использовать переменные в регулярных выражениях. –