Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регистронезависимое удаление повторных вхождений подстрок из строк (https://javascript.ru/forum/misc/74980-registronezavisimoe-udalenie-povtornykh-vkhozhdenijj-podstrok-iz-strok.html)

user7143 22.08.2018 17:14

Регистронезависимое удаление повторных вхождений подстрок из строк
 
Добрый день!

Использую такой скрипт для удаления повторяющихся слов в строках, например из строки "лук чеснок лук редис" удаляю повторное вхождение "лук":

var string = "лук чеснок лук редис";
var uniqueList=string.split(' ').filter(function(allItems,i,a){return i==a.indexOf(allItems);}).join(' ');
$('#output').append(uniqueList).append('<br />');


подскажите, пожалуйста, как сделать поиск повторов регистронезависимым, т.е. чтобы из строки "лук чеснок ЛуК редис" подстрока "ЛуК" тоже была бы удалена?

Спасибо!

laimas 22.08.2018 17:36

Переведите входную строку в нижний регистр, коли остаться должен "лук".

user7143 22.08.2018 17:47

Цитата:

Сообщение от laimas (Сообщение 493212)
Переведите входную строку в нижний регистр, коли остаться должен "лук".

не подходит, регистр во входных данных менять нельзя

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

laimas 22.08.2018 17:55

Цитата:

Сообщение от user7143
регистр во входных данных менять нельзя

А вас кто-то заставляет это делать, что нельзя это сделать здесь - var uniqueList=string.split....?

j0hnik 22.08.2018 17:55

var uniqueList = string.replace(/\S+/g, (m,offset) => string.search( new RegExp(m,'i')) < offset ? '' : m);

первое что пришло на ум

user7143 22.08.2018 18:24

Цитата:

Сообщение от j0hnik (Сообщение 493215)
var uniqueList = string.replace(/\S+/g, (m,offset) => string.search( new RegExp(m,'i')) < offset ? '' : m);

первое что пришло на ум


Спасибо большое!

рони 22.08.2018 19:20

user7143,
порядок слов важен?

рони 22.08.2018 19:34

user7143,
если порядок слов не важен, можно так
var string = "лук чеснок ЛуК редис";
 var reg = /(\S+)(?![\s\S]+?\1)/gi;
 string = string.match(reg).join(" ").toLowerCase();
 alert(string);


Часовой пояс GMT +3, время: 02:56.