Задача должна решаться с использованием регулярных выражений без использования контейнерных классов.
Входные данные: текст (может состоять из букв латинского и кириллического алфавита, не содержит _
)
Выходные данные: источниктекст, но перед всеми повторяющимися словами подчеркивание _
Рассматривать слово как последовательность, содержащую только буквы (все остальные символы не включены в слово). Создайте метод статического преобразования, который преобразует входные данные в выходные.
Метод для завершения:
public static String convert (String input) {
...
}
Пример ввода:
This is a test
And this is also a test
And these are also tests
test
Это тест
Это также тест
И это также тесты
Пример вывода:
This _is _a _test
_And this _is _also _a _test
_And these are _also tests
_test
_Это _тест
_Это _также _тест
И это _также тесты
Моя попытка:
public static void convert(String input) {
Pattern p = Pattern.compile("(\\b\\w+\\b)(?=[\\s\\S]*\\b\\1\\b[\\s\\S]*\\b\\1\\b)", Pattern.UNICODE_CHARACTER_CLASS);
String res = p.matcher(input+" "+input).replaceAll("_$1");
res = res.substring(0, res.length() - 1 - p.matcher(input).replaceAll("_$1").length());
System.out.println(res);
}
Мой вывод: введите описание изображения здесь
This _is _a _test
_And this _is _also _a test
_And these are _also tests
_test
_Это _тест
_Это _также _тест
И это _также тесты
Слово "тест" во втором ряду без "_", номне нужно "_test"