Javascript .replace () с несколькими вызовами, некоторые с переменными, некоторые с простым текстом - PullRequest
3 голосов
/ 09 мая 2011

Код:

var csMasterPrefix = 'CS_',
    cpMasterPrefix = 'CP_',
    csContentPrefix = 'CSContent_',
    cpContentPrefix = 'CPContent_';

/* ... */

$this.attr("id")
    .replace(csMasterPrefix,'')
    .replace(cpMasterPrefix,'')
    .replace(csContentPrefix,'')
    .replace(cpContentPrefix,'')
    .replace('ibtn','')
    .replace('btn','')
    .replace('lbtn','')
    .replace('img','')
    .toLowerCase();

Вопрос: Позвольте мне предисловие, сказав, что я посмотрел на решения, которые говорят, чтобы сделать вашу собственную "чистую" функцию,Мой вопрос на самом деле не в том, как это сделать, а в том, как сделать регулярное выражение ONE , которое бы объединяло все вызовы замены в один?

1 Ответ

8 голосов
/ 09 мая 2011

Используя RegExp, оператор выбора | и глобальный флаг g:

var to_replace = [csMasterPrefix, ..., 'ibtn', ...];
var id = $this.attr("id").replace(new RegExp(to_replace.join('|'), 'g'), '');

Не знаю, является ли это наиболее эффективным решением, но оно будет работать.

В качестве альтернативы вы можете перебрать to_replace и выполнить обычную замену строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...