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> кажется более подходящей структурой данных.

Другие вопросы по тегам