Если вхождение более двух раз подряд, замените это вхождение на новое слово angularjs.
У меня есть текст из бэкэнда с несколькими перерывами, приходящимися на 2 перерыва, 4 перерыва или 6 перерывов, и я хочу заменить перерывы на 2 перерыва. Например: если в строке у меня четыре непрерывных перерыва, то я хочу заменить эти разрывы только на 2 перерыва.
Я попробовал следующий код, но не сработало:
TMSApp.filter('newlinesmatch', function () {
return function(text) {
var str = '<br>';
var count = (text.match(/<br>/g) || []).length;
if(count > 2){
return String(text).replace(/<br>/g,'<br><br>');
}
}
});
кто-нибудь может помочь?
1 ответ
Вы можете заменить любое количество последовательных вхождений <br>
с <br><br>
как это:
TMSApp.filter('newlinesmatch', function () {
return function(text) {
return text.replace(/(<br>)+/g, '<br><br>');
}
});
ПРИМЕЧАНИЕ: я знаю, что вы упомянули, что вы всегда будете получать 2, 4 или 6 последовательных перерывов. Тем не менее, стоит отметить, что решение, приведенное выше, заменит любое количество последовательных вхождений (даже одного) на <br><br>
,
РЕДАКТИРОВАТЬ:
Согласно приведенному ниже комментарию с РЕАЛЬНЫМ примером, я внес изменения ниже. Обратите внимание, что оригинальный ответ работает для первоначально описанного сценария, где нужно было заменить CONSECUTIVE. <br>
s. РЕАЛЬНЫЙ пример не имеет последовательных <br>
с, так как между каждой парой есть пробел. Следующий код будет работать для этого случая:
.filter('newlinesmatch', function () {
return function(text) {
return text.replace(/(<br>\s*)+/g, '<br><br>');
}
});
А вот рабочий поршень с предоставленными образцами данных: