Ich muss meinen String durch Leerzeichen teilen. Dafür habe ich versucht:
str = "Hello I'm your String";
String[] splited = str.split(" ");
Aber es scheint nicht zu funktionieren.
fork
Link in der oberen linken Ecke.
Ich muss meinen String durch Leerzeichen teilen. Dafür habe ich versucht:
str = "Hello I'm your String";
String[] splited = str.split(" ");
Aber es scheint nicht zu funktionieren.
fork
Link in der oberen linken Ecke.
Antworten:
Was du hast, sollte funktionieren. Wenn die bereitgestellten Leerzeichen jedoch standardmäßig ... etwas anderes sind? Sie können den Leerzeichen-Regex verwenden:
str = "Hello I'm your String";
String[] splited = str.split("\\s+");
Dies führt dazu, dass eine beliebige Anzahl aufeinanderfolgender Leerzeichen Ihre Zeichenfolge in Token aufteilt.
Nebenbei bemerkt, ich bin mir nicht sicher, ob "gespalten" ein Wort ist :) Ich glaube, der Zustand, Opfer einer Spaltung zu sein, ist auch "gespalten". Es ist eines dieser kniffligen Grammatik-Dinge :-) Ich versuche nicht, wählerisch zu sein, ich dachte nur, ich würde es weitergeben!
Beachten Sie, dass die akzeptierte Antwort zwar gut ist, Sie jedoch eine führende leere Zeichenfolge erhalten, wenn Ihre Eingabezeichenfolge mit einem Leerzeichen beginnt. Zum Beispiel mit:
String str = " Hello I'm your String";
String[] splitStr = str.split("\\s+");
Das Ergebnis wird sein:
splitStr[0] == "";
splitStr[1] == "Hello";
splitStr[2] == "I'm";
splitStr[3] == "Your";
splitStr[4] == "String";
Vielleicht möchten Sie Ihre Saite kürzen, bevor Sie sie teilen:
String str = " Hello I'm your String";
String[] splitStr = str.trim().split("\\s+");
Verwenden Sie Stringutils.split()
diese Option , um die Zeichenfolge durch weiße Schritte zu teilen. Gibt zum Beispiel StringUtils.split("Hello World")
"Hallo" und "Welt" zurück;
Um den genannten Fall zu lösen, verwenden wir eine solche Split-Methode
String split[]= StringUtils.split("Hello I'm your String");
Wenn wir das geteilte Array drucken, lautet die Ausgabe wie folgt:
Hallo
Ich bin
Ihre
String
Versuchen
String[] splited = str.split("\\s");
http://download.oracle.com/javase/tutorial/essential/regex/pre_char_classes.html
Wenn Sie die String-Split-Methode nicht verwenden möchten, können Sie die StringTokenizer-Klasse in Java als verwenden.
StringTokenizer tokens = new StringTokenizer("Hello I'm your String", " ");
String[] splited = new String[tokens.countTokens()];
int index = 0;
while(tokens.hasMoreTokens()){
splited[index] = tokens.nextToken();
++index;
}
Probier diese
String str = "This is String";
String[] splited = str.split("\\s+");
String split_one=splited[0];
String split_second=splited[1];
String split_three=splited[2];
Log.d("Splited String ", "Splited String" + split_one+split_second+split_three);
Ein alternativer Weg wäre:
import java.util.regex.Pattern;
...
private static final Pattern SPACE = Pattern.compile(" ");
String[] arr = SPACE.split(str); // str is the string to be split
Hab es hier gesehen
OK, also müssen wir uns aufteilen, da Sie bereits die Antwort erhalten haben, die ich verallgemeinern würde.
Wenn Sie eine Zeichenfolge durch Leerzeichen teilen möchten, trennen Sie das Zeichen (Sonderzeichen).
Entfernen Sie zunächst den führenden Bereich, da die meisten Probleme auftreten.
str1 = " Hello I'm your String ";
str2 = " Are you serious about this question_ boy, aren't you? ";
Entfernen Sie zuerst das führende Leerzeichen, das Leerzeichen, Tabulator usw. sein kann.
String s = str1.replaceAll("^\\s+","");//starting with whitespace one or more
Nun, wenn Sie nach Leerzeichen oder Sonderzeichen aufteilen möchten.
String[] sa = s.split("[^\\w]+");//split by any non word char
Da w jedoch [a-zA-Z_0-9] enthält, verwenden Sie auch, wenn Sie durch Unterstrich (_) teilen möchten
String[] sa = s.split("[!,? ._'@]+");//for str2 after removing leading space
replaceAll("^\\s+","")
hat mir den Tag gerettet. Das hat bei meinem Fall funktioniert. Vielen Dank
Sie können die Zeichenfolge mit dem folgenden Code saperieren
String thisString="Hello world";
String[] parts = theString.split(" ");
String first = parts[0];//"hello"
String second = parts[1];//"World"
Da es eine Weile her ist, dass diese Antworten veröffentlicht wurden, ist hier eine andere aktuellere Methode, um das zu tun, was gefragt wird:
List<String> output = new ArrayList<>();
try (Scanner sc = new Scanner(inputString)) {
while (sc.hasNext()) output.add(sc.next());
}
Jetzt haben Sie eine Liste von Zeichenfolgen (die wohl besser ist als ein Array); Wenn Sie ein Array benötigen, können Sie dies tunoutput.toArray(new String[0]);
Einfach, String durch Leerzeichen zu spucken
String CurrentString = "First Second Last";
String[] separated = CurrentString.split(" ");
for (int i = 0; i < separated.length; i++) {
if (i == 0) {
Log.d("FName ** ", "" + separated[0].trim() + "\n ");
} else if (i == 1) {
Log.d("MName ** ", "" + separated[1].trim() + "\n ");
} else if (i == 2) {
Log.d("LName ** ", "" + separated[2].trim());
}
}