как упростить этот код - PullRequest
       2

как упростить этот код

2 голосов
/ 16 августа 2010

Что было бы хорошим способом сделать это.У меня есть строка с большим количеством "<" и>, и я хочу заменить их на <и>.Итак, я написал это:

var str = &lt;/text&gt;&lt;word34212&gt;
var p = str.replace('\&lt\;','\<');
var m = p.replace('\&gt\;','\>');

, но это просто делает первый экземпляр каждого - и последующие экземпляры </> не заменяются.Я рассмотрел сначала подсчет экземпляров <, а затем зацикливание и замену одного экземпляра кода на каждой итерации ... и затем делал то же самое для>, но, очевидно, это довольно многословно.

Кто-нибудь может предложить более аккуратный способ сделать это?

Ответы [ 5 ]

6 голосов
/ 16 августа 2010

Для замены нескольких вхождений вы используете регулярное выражение, так что вы можете указать глобальный (g) флаг:

var m = str.replace(/&lt;/g,'<').replace(/&gt;/g,'>');
4 голосов
/ 16 августа 2010

Взято из: http://www.bradino.com/javascript/string-replace/

Функция JavaScript для строки Заменить заменяет первое вхождение в строке. Функция похожа в функцию php str_replace и принимает два простых параметра. Первый Параметр является шаблоном для поиска и вторым параметром является строка замените шаблон, когда найдете. Функция JavaScript не Заменить все ...

Чтобы заменить все, вы должны сделать это немного по-другому. Заменить все вхождений в строку, используйте g модификатор как это:

str = str.replace(/find/g,”replace”)
2 голосов
/ 16 августа 2010

Вам нужно использовать модификатор de / g в вашем регулярном выражении, и он будет работать.Проверьте эту страницу для примера: http://www.w3schools.com/jsref/jsref_replace.asp

2 голосов
/ 16 августа 2010

Вам необходимо использовать глобальный модификатор:

var p = str.replace(/\&lt\;/g,'\<');
0 голосов
/ 16 августа 2010

Я бы назвал ассоциативный массив [регулярное выражение -> замена] и одна итерация сделала бы это

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