Хорошо, это моя первая запись, поэтому вам придется извинить меня, если я ошибаюсь. Короче говоря, мне задан массив строк, и моя цель - сохранить количество уникальных слов строки, а также удалить любые знаки препинания из массива.Удаление всех символов без слов (пунктуация) из строки
public static HashMap<String, Integer> uniqueWords(String[] book) {
HashMap<String, Integer> hm = new HashMap<>();
for (int i = 0; i < book.length; i++) {
if (hm.containsKey(book[i])) {
hm.put(book[i], hm.get(book[i]) + 1);
} else {
book[i] = book[i].replaceAll("[^a-zA-Z]","").replaceAll("\\p{Punct}","").replaceAll("\\W+","").replaceAll("\\n","").toLowerCase();
hm.put(book[i], 1);
}
}
return hm;
}
Входной сигнал: { "окунь", "окунь", "окунь", "Блуфиши", "луфаря", "луфаря", "*", "%", ""};
Выход: {= 2, луфаря = 3, окунь = 3}
Так что мне удалось успешно удалить любое пустое пространство, но я все еще с звездочкой и процентиль подсчитывается.
Любая помощь приветствуется, спасибо.
Я попробовал несколько вариантов, чтобы это не помогло, спасибо за ваше решение в любом случае. –
Я осознаю свою ошибку. Редко когда-либо будет случай, когда символ не-слова не будет привязан к строке, содержащей слово, и в этом случае мой код удалит символ без слова: –
Вот окончательная версия кода: public static HashMap uniqueWords (String [] book) { HashMap hm = new HashMap <>(); для (int i = 0; i