Konvertieren einer Satzzeichenfolge in ein Zeichenfolgenarray von Wörtern in Java
Lesezeit: 3 Minuten
Ich brauche mein Java-Programm, um eine Zeichenfolge zu nehmen wie:
"This is a sample sentence."
und verwandle es in ein String-Array wie:
{"this","is","a","sample","sentence"}
Keine Punkte oder Satzzeichen (vorzugsweise). Die String-Eingabe ist übrigens immer ein Satz.
Gibt es eine einfache Möglichkeit, dies zu tun, die ich nicht sehe? Oder müssen wir wirklich viel nach Leerzeichen suchen und aus den Bereichen zwischen den Leerzeichen (die Wörter sind) neue Zeichenfolgen erstellen?
String.split() wird das meiste tun, was Sie wollen. Möglicherweise müssen Sie dann die Wörter durchlaufen, um Satzzeichen herauszuziehen.
Zum Beispiel:
String s = "This is a sample sentence.";
String[] words = s.split("\\s+");
for (int i = 0; i < words.length; i++) {
// You may want to check for a non-word character before blindly
// performing a replacement
// It may also be necessary to adjust the character class
words[i] = words[i].replaceAll("[^\\w]", "");
}
Könnten Sie eine Erklärung zu den von Ihnen verwendeten regulären Ausdrücken hinzufügen?
– Marek
19. Juni 2013 um 0:15 Uhr
@Marek 1. \\s bedeutet Leerzeichen, \\s+ bedeutet mehrere Leerzeichen 2. .replaceAll(“[^\\w]”, “”); und .replaceAll(“\\W”, “”); Beide ersetzen die Zeichen außer [a-zA-Z0-9_]. Wenn Sie auch den Unterstrich ersetzen möchten, verwenden Sie: [\\W_]
– Wyschnav Ramesh Thrissur
4. April 2018 um 10:11 Uhr
Es funktioniert gut, obwohl ich Upvote habe, aber dieser reguläre Ausdruck entfernt alle, wenn Sonderzeichen vorhanden sind !!! Bitte aktualisieren Sie, wenn es einen normalen regulären Ausdruck gibt, der kein Zeichen entfernt
– Tarit Ray
26. Juni 2018 um 10:43 Uhr
Ganapathi.D
Jetzt kann dies nur mit erreicht werden split wie es Regex braucht:
String s = "This is a sample sentence with []s.";
String[] words = s.split("\\W+");
dies ergibt Wörter wie: {"this","is","a","sample","sentence", "s"}
Das \\W+ stimmt mit allen nicht alphabetischen Zeichen überein, die einmal oder mehrmals vorkommen. Es muss also nicht getauscht werden. Sie können auch andere Muster überprüfen.
Vielleicht möchten Sie die Regex mit beginnen (?U) um die Unicode-Zeichenklasse zu aktivieren, sonst funktioniert es nur mit dem englischen Alphabet.
String str = "This is a simple sentence";
String[] strgs = str.split(" ");
Dadurch wird an jedem Index des String-Arrays eine Teilzeichenfolge erstellt, wobei das Leerzeichen als Trennpunkt verwendet wird.
eebben
Sie können Ihre Zeichenfolge einfach so aufteilen regulär Ausdruck
String l = "sofia, malgré tout aimait : la laitue et le choux !" <br/>
l.split("[[ ]*|[,]*|[\\.]*|[:]*|[/]*|[!]*|[?]*|[+]*]+");
James
Die einfachste und beste Antwort, die mir einfällt, ist die Verwendung der folgenden Methode, die in der Java-Zeichenfolge definiert ist –
String[] split(String regex)
Und machen Sie einfach “Dies ist ein Beispielsatz”.split(” “). Da eine Regex erforderlich ist, können Sie auch kompliziertere Aufteilungen vornehmen, die das Entfernen unerwünschter Satzzeichen und anderer solcher Zeichen umfassen können.
Leute, das ist die einfachste Lösung, wenn ein Satz keine Interpunktion hat.
– Sandalen
21. August 2013 um 15:07 Uhr
10923600cookie-checkKonvertieren einer Satzzeichenfolge in ein Zeichenfolgenarray von Wörtern in Javayes
Vielleicht möchten Sie sich auch die Guave Splitter-Klasse ansehen: guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/…
– dkarp
12. Januar 2011 um 22:51 Uhr