web-dev-qa-db-fra.com

Comment diviser une chaîne par un espace

J'ai besoin de diviser ma chaîne par des espaces . Pour cela, j'ai essayé:

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

Mais cela ne semble pas fonctionner.

265
safari

Ce que vous avez devrait fonctionner. Si, toutefois, les espaces fournis sont remplacés par défaut par ... autre chose? Vous pouvez utiliser le regex des espaces blancs:

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

Cela fera diviser votre chaîne en jetons, quel que soit le nombre d'espaces consécutifs.

En remarque, je ne suis pas sûr que "scindé" soit un mot :) Je pense que l'état d'être victime d'une scission est également "scindé". C'est une de ces questions de grammaire délicates :-) N'essayant pas d'être pointilleux, j'ai juste pensé que je le transmettrais!

520
corsiKa

Bien que la réponse acceptée soit bonne, sachez que vous allez finir avec une chaîne vide si votre chaîne d'entrée commence par un espace blanc. Par exemple, avec:

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

Le résultat sera:

splitStr[0] == "";
splitStr[1] == "Hello";
splitStr[2] == "I'm";
splitStr[3] == "Your";
splitStr[4] == "String";

Donc, vous voudrez peut-être couper votre chaîne avant de la scinder:

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

Je pense que le fait de placer une expression régulière dans les parenthèses str.split devrait résoudre le problème. La méthode Java String.split () étant basée sur des expressions régulières, il vous faut:

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

Utilisez Stringutils.split() pour scinder la chaîne en blancs. Par exemple, StringUtils.split("Hello World") renvoie "Hello" et "World";

Afin de résoudre le cas mentionné, nous utilisons la méthode split comme celle-ci. 

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

lorsque nous imprimons le tableau divisé, le résultat sera:

Bonjour

Je suis

votre

Chaîne

Vous trouverez un exemple complet de démonstration ici

12
sandeep vanama

Essaye celui-là

    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

si, d'une manière ou d'une autre, vous ne voulez pas utiliser la méthode String Split, vous pouvez utiliser la classe StringTokenizer en Java en tant que.

    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
Muhammad Suleman

Une autre manière serait:

import Java.util.regex.Pattern;

...

private static final Pattern SPACE = Pattern.compile(" ");
String[] arr = SPACE.split(str); // str is the string to be split

Je l'ai vu ici

3
gjain
3
Vladimir

OK, nous devons donc nous séparer car vous avez déjà obtenu la réponse, je la généraliserais.

Si vous souhaitez fractionner une chaîne par des espaces, séparateur (caractères spéciaux).

Tout d’abord, supprimez l’espace principal car ils créent la plupart des problèmes.

str1 = "    Hello I'm your       String    ";
str2 = "    Are you serious about this question_  boy, aren't you?   ";

Commencez par supprimer l’espace de début qui peut être espace, tabulation, etc.

String s = str1.replaceAll("^\\s+","");//starting with whitespace one or more

Maintenant, si vous voulez diviser par espace ou tout caractère spécial.

String[] sa = s.split("[^\\w]+");//split by any non Word char

Mais comme w contient [a-zA-Z_0-9], donc si vous voulez séparer par un trait de soulignement (_), utilisez aussi

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

Depuis que ces réponses ont été publiées il y a longtemps, voici une autre façon plus courante de faire ce qui est demandé:

List<String> output = new ArrayList<>();
try (Scanner sc = new Scanner(inputString)) {
    while (sc.hasNext()) output.add(sc.next());
}

Maintenant vous avez une liste de chaînes (ce qui est sans doute mieux qu'un tableau); si vous avez besoin d'un tableau, vous pouvez faire output.toArray(new String[0]);

0
daniu

Simple à diviser chaîne par espace

    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
Jaydeep Dobariya

Exemple très simple ci-dessous:

J'espère que ça aide.

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

vous pouvez séparer la chaîne en utilisant le code ci-dessous

   String thisString="Hello world";

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

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

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

Voici une méthode pour couper une chaîne qui a un "," ou un espace

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

        return output;
    }
0
MrG