Java скриптлет для удаления дубликатов в строке, разделенных | (Разделитель)
У меня есть String
это выглядит как "(doc1| doc1| provid| geestt| stable)"
, Он представляет массив, и я хочу удалить из него любые дубликаты, чтобы doc1 появлялся только один раз. Как я могу это сделать?
1 ответ
Решение
String s = "(doc1|doc1|provid|geestt|provid|stable)";
s = s.replaceAll("\\b(\\w+)\\|(?=.*\\b\\1\\b)", "");
System.out.println(s);
// (doc1|geestt|provid|stable)
Это использует \\w
для слова char; наверное тебе нужно [^|)]
то есть: не один из символов разделителя. Ширина 0 символов \\b
для определения границ слов, которые подходят.
Эта модель использует прогнозирование (?= ... )
содержащий \\1
1-е совпадение ()
группа: слово.
PSSet<String>
кажется более подходящей структурой данных.