Удаление повторяющихся слов из строки

265
24 августа 2017, 22:39

Есть строка, необходимо удалить из неё всё повторяющиеся слова т.е из строки 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 ) );

Подскажите, где неправ, почему работает не верно?

Answer 1
"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 и обратно клеим в строку.

Правда подход довольно специфичен. Будет работать ТОЛЬКО для ссылок и обязателен слэш на конце. Набросал на скору руку, главное идею показал. Можем улучшить :)

Answer 2

В качестве альтернативы, можно воспользоваться возможностью регулярных выражений использовать значения уже захваченных групп. Это позволит найти повторяющиеся части.

В простых случаях может помочь следующее регулярное выражение

/\/(.+?)\/(.*)\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/");

READ ALSO
Как пройти по объекту как ключ значение

Как пройти по объекту как ключ значение

Есть такая структура данных

274
не работает fetch

не работает fetch

не пойму как работает этот фетч

232
PHP Warning: mysqli_connect(): (HY000/1698): Access denied for user 'root'@'localhost' in

PHP Warning: mysqli_connect(): (HY000/1698): Access denied for user 'root'@'localhost' in

Делаю сайт, не могу подключиться к базеКод

208
Как связать php скрипт с сайтом

Как связать php скрипт с сайтом

Доброго дня, уважаемые форумчане, такой вопросУ меня есть php программка , которая работает локально на моём ПК(поменял пару параметров и запустил...

300