Есть строка, необходимо удалить из неё всё повторяющиеся слова т.е из строки http://spb.site.ru/der/der/ удалить der/ Строка формируется автоматически.
var stroka = "http://spb.site.ru/der/der/";
function removeWords( str ) {
var lastWord = '';
return str.replace( /([^\s]+)(\s|$)/g, function( all, w, e ){
return lastWord.toLowerCase() == w.toLowerCase() ? '' : ( lastWord = w ) + e;
});
}
console.log( removeWords( stroka ) );
Подскажите, где неправ, почему работает не верно?
"http://spb.site.ru/der/der/"
.match(/(http:\/\/|https:\/\/|[-\.A-Za-z0-9]+\/)/g)
.filter((v, i, a) => a.indexOf(v) === i)
.join("")
Вернет http://spb.site.ru/der/
Идея в том, что мы бьем ссылку на массив из составляющих, дальше фильтруем повторы через filter
и обратно клеим в строку.
Правда подход довольно специфичен. Будет работать ТОЛЬКО для ссылок и обязателен слэш на конце. Набросал на скору руку, главное идею показал. Можем улучшить :)
В качестве альтернативы, можно воспользоваться возможностью регулярных выражений использовать значения уже захваченных групп. Это позволит найти повторяющиеся части.
В простых случаях может помочь следующее регулярное выражение
/\/(.+?)\/(.*)\1\/?/
Пример использования:
function log(str) {
console.log('source', str);
console.log('replaced', str.replace(/\/(.+?)\/(.*)\1\/?/, '/$1/$2'));
}
log("http://spb.site.ru/der/der/");
log("http://spb.site.ru/wander/der/");
log("http://spb.site.ru/derwan/der/");
log("http://spb.site.ru/der/sdf/der/");
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Делаю сайт, не могу подключиться к базеКод
Доброго дня, уважаемые форумчане, такой вопросУ меня есть php программка , которая работает локально на моём ПК(поменял пару параметров и запустил...