it-swarm.com.de

So teilen Sie einen String nach Leerzeichen auf

Ich muss meinen String nach Leerzeichen aufteilen.

str = "Hello I'm your String";
String[] splited = str.split(" ");

Aber es scheint nicht zu funktionieren.

265
safari

Was du hast, sollte funktionieren. Wenn jedoch die zur Verfügung gestellten Leerzeichen standardmäßig ... etwas anderes sind? Sie können die Whitespace-Regex verwenden:

str = "Hello I'm your String";
String[] splited = str.split("\\s+");

Dies führt dazu, dass beliebig viele aufeinanderfolgende Leerzeichen Ihre Zeichenfolge in Token aufteilen.

Als Randbemerkung bin ich nicht sicher, dass "geteilt" ein Wort ist :) Ich glaube, dass der Zustand eines Split-Opfers auch "aufgeteilt" ist. Es ist eine dieser kniffligen Grammatiksachen :-) Ich versuche nicht wählerisch zu sein, dachte nur, ich würde es weitergeben!

520
corsiKa

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 Zeichenfolge zuschneiden, bevor Sie sie teilen:

String str = " Hello I'm your String";
String[] splitStr = str.trim().split("\\s+");
60
GaspardP

Ich glaube, dass ein regulärer Ausdruck in den str.split-Klammern das Problem lösen sollte. Die Java-Methode String.split () basiert auf regulären Ausdrücken. Sie benötigen also:

str = "Hello I'm your String";
String[] splitStr = str.split("\\s+");
24
rbrtl

Verwenden Sie Stringutils.split(), um die Zeichenfolge nach weißen Schritten zu teilen. Zum Beispiel gibt StringUtils.split("Hello World") "Hallo" und "Welt" zurück.

Um den genannten Fall zu lösen, verwenden wir die Split-Methode 

String split[]= StringUtils.split("Hello I'm your String");

wenn wir das Split-Array drucken, wird folgende Ausgabe ausgegeben:

Hallo

Ich bin

ihre

String

Für eine vollständige Beispieldemo überprüfen Sie bitte hier

12
sandeep vanama

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);
6
sachin pangare

wenn Sie die String-Split-Methode nicht verwenden möchten, können Sie die StringTokenizer-Klasse in Java 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;
    }
4

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

Sah es hier

3
gjain
3
Vladimir

OK, also müssen wir spalten, da Sie bereits die Antwort haben, die ich verallgemeinern würde.

Wenn Sie einen String nach Leerzeichen aufteilen möchten, setzen Sie Trennzeichen (Sonderzeichen).

Entfernen Sie zunächst den führenden Bereich, da die meisten Probleme entstehen.

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

Aber da w [a-zA-Z_0-9] enthält, sollten Sie also, wenn Sie den Unterstrich (_) teilen wollen, auch verwenden

 String[] sa = s.split("[!,? ._'@]+");//for str2 after removing leading space
2
Anuj Kumar Soni

Da diese Antworten bereits einige Zeit vergangen sind, finden Sie hier eine 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 Strings (die besser als ein Array ist). Wenn Sie ein Array benötigen, können Sie output.toArray(new String[0]);

0
daniu

Einfacher String nach Leerzeichen aufteilen

    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());
         }
     }
0

Sehr einfaches Beispiel unten:

Ich hoffe es hilft.

String str = "Hello I'm your String";
String[] splited = str.split(" ");
var splited = str.split(" ");
var splited1=splited[0]; //Hello
var splited2=splited[1]; //I'm
var splited3=splited[2]; //your
var splited4=splited[3]; //String
0
Bulti Dutta

sie können die Zeichenfolge mit dem folgenden Code trennen

   String thisString="Hello world";

   String[] parts = theString.split(" ");

   String first = parts[0];//"hello"

    String second = parts[1];//"World"
0

Hier ist eine Methode zum Beschneiden einer Zeichenfolge, die ein Leerzeichen (",") enthält

private String shorterName(String s){
        String[] sArr = s.split("\\,|\\s+");
        String output = sArr[0];

        return output;
    }
0
MrG