Wenn ich Recht wollen Sie für die Vorkommen aller Wörter suchen, nicht alle möglichen Teil. Ein sehr kleiner, leicht zu verstehen, Code wäre die folgend:
// Split at space
String[] words = input.split(" ");
HashMap<String, Integer> countingMap = new HashMap<>();
for (String word : words) {
Integer counter = countingMap.get(word);
if (counter == null)) {
counter = 0;
}
countingMap.put(word, counter + 1);
}
Doch dieser Ansatz beschränkt ist, wie ich jedes Wort davon ausgegangen, von einem Raum umgeben ist.
Regex ist ein leistungsfähigeres Werkzeug, es stellt ein spezielles Zeichen für eine Wortgrenze zur Verfügung (das entspricht auch,.!? Usw.). Betrachten Sie das folgende Muster:
\b(.+?)\b
Sie ein Beispiel hier sehen können: regex101.com/r/hO8kA0/1
Wie dies in Java?
Pattern pattern = Pattern.compile("\\b(.+?)\\b");
Matcher matcher = pattern.matcher(input);
while(matcher.find()) {
String word = matcher.group(1);
// Here is your word, count the occurrences like above
}
Split mit dem Leerzeichen; Iteriere über die Ergebnisliste, vergleiche jedes Ergebnis und zähle Übereinstimmungen. Wenn Sie ein konkretes Problem haben, kommen Sie hierher zurück. Ansonsten scheint dies eine Frage zu sein, "bitte mach meine Hausaufgaben". –
@ jp-jee Dies ist die zweite Frage, die ich in den letzten ein oder zwei Tagen gesehen habe, als ich diese sehr spezifische Frage gestellt habe - wie man Wörter in einer Zeichenfolge zählt. Sie sind wahrscheinlich in der gleichen Klasse. – Aaron
Mögliches Duplikat von [Anzahl eindeutiger Wörter] (http://stackoverflow.com/questions/6454348/count-number-of-distinct-words) –