2015-01-23 2 views
6

Я хочу заменить строку на другую. Я обнаружил, что если replaceValue содержит "$", замена не будет выполнена. Поэтому я сначала пытаюсь избежать "$""$$". Код выглядит так:javascript - лучший способ избежать знака доллара в строке Используется String.prototype.replace

var str = ..., reg = ...; 
function replaceString(replaceValue) { 
    str.replace(reg, replaceValue.replace(/\$/g, '$$$$')); 
} 

Но я думаю, что это некрасиво, так как мне нужно написать 4 знака доллара.

Есть ли другие характеристики, которые мне нужно убежать? И есть ли лучший способ сделать это?

ответ

13

Существует способ позвонить replace, что позволяет нам не беспокоиться о том, чтобы избежать чего-либо.

var str = ..., reg = ...; 
function replaceString(replaceValue) { 
    return str.replace(reg, function() { return replaceValue }); 
} 
1

К сожалению, ничего не поделаешь.
Как работает JavaScript с регулярными выражениями.

Вот хорошая статья со списком всех шаблонов замены вы должны знать: http://es5.github.io/#x15.5.4.11

+0

В статье ничего не говорится об их избегании. Скорее, они являются синтаксисом строки замены. – nhahtdh

+0

Исправить. Но см. Вопрос OP: «Есть ли какие-то другие характеристики, которые мне нужно убежать?». В статье представлены шаблоны, о которых он должен знать. –

+0

Я думаю, вы должны изменить формулировку на: «... список всех шаблонов замены, которые ваш метод проделал хорошую работу по их побегу» – nhahtdh

6

Вашего метода, чтобы избежать замены строка является правильной.

Согласно разделу 15.5.4.11 String.prototype.replace из ECMAScript specification edition 5.1, все специальные последовательности замены начинается с $ ($&, $`, $', $n, $nn) и $$ указать в замене единого $.

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

Нет другого краткого способа сделать замену, насколько я могу видеть.

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