Не получается вернуть в предложение замененные знаки
Никак не пойму что делать: программе даётся строка на проверку запрещенных слов. Для упрощения проверки все запятые заменяются пробелом (в итоге получается двойной пробел). После проверки не удаётся вернуть запятые на прежние места. Заранее благодарю за помощь.
public static void main(String[] arguments) {
{
String badWords[] = {"kiss"}; //одно из слов, подверженных цензуре
String str = "I wanna kiss you right now, my dear"; //фраза, содержащая это слово
String repl1 = str.replace(",", " ");
//поскольку цензура не проходила благодаря запятым, мы заменяем их на пробел
String[] words = repl1.split(" ");
for (int i = 0; i < words.length; i++) {
for (String badWord: badWords) {
if (words[i].equals(badWord)) {
words[i] = words[i].replaceAll("\\B\\w\\B", "*");
}
}
}
System.out.println(String.join(" ", words));
//на выходе получаем предложение без запятых, которые надо вернуть
}
}
Ответы (1 шт):
Автор решения: Tiarait
→ Ссылка
Замена запятых вам не поможет, а если там будет не запятая, а точка или еще какой знак? Думаю должно быть примерно так
String badWords[] = {"kiss", "now", "right"}; //одно из слов, подверженных цензуре
String str = "I wanna Kiss. yokissu right now, my .kiss!"; //фраза, содержащая это слово
for (String badWord: badWords) {
if (str.contains(badWord)) {
str = str.replaceAll("\\b"+badWord+"\\b", badWord.replaceAll("\\B\\w\\B", "*"));
}
}
System.out.println(str);
Результат I wanna Kiss. yokissu r***t n*w, my .k**s!
Так же можете вначале добавить (?i) для игнорирования регистра. Например
str = str.replaceAll("\\b(?i)"+badWord+"\\b", badWord.replaceAll("\\B\\w\\B", "*"));
Получим I wanna k**s. yokissu r***t n*w, my .k**s!