web-dev-qa-db-fra.com

Fractionner la chaîne sur plusieurs espaces dans java

Duplicata possible:
Comment diviser une chaîne par un espace

J'ai besoin d'aide pour analyser un fichier texte. Le fichier texte contient des données comme

This is     different type   of file.
Can not split  it    using ' '(white space)

Mon problème est que les espaces entre les mots ne sont pas similaires. Parfois, il y a un seul espace et parfois plusieurs espaces sont donnés.

J'ai besoin de diviser la chaîne de manière à ne recevoir que des mots, pas des espaces.

26
Sachin Mhetre

Essayez de voir str.split("\\s+"). Il renvoie un tableau de chaînes (String[]).

41
Bhesh Gurung

Vous pouvez utiliser Quantifiers pour spécifier le nombre d'espaces sur lesquels vous souhaitez diviser: -

    `+` - Represents 1 or more
    `*` - Represents 0 or more
    `?` - Represents 0 or 1
`{n,m}` - Represents n to m

Alors, \\s+ divisera votre chaîne sur one or more les espaces

String[] words = yourString.split("\\s+");

De plus, si vous souhaitez spécifier des nombres spécifiques, vous pouvez donner votre plage entre {}:

yourString.split("\\s{3,6}"); // Split String on 3 to 6 spaces
14
Rohit Jain

vous pouvez utiliser un motif regex

public static void main(String[] args)
{
    String s="This is     different type   of file.";
    String s1[]=s.split("[ ]+");
    for(int i=0;i<s1.length;i++)
    {
        System.out.println(s1[i]);
    }
}

production

This
is
different
type
of
file.
5
Bhavik Shah

Utilisez une expression régulière.

String[] words = str.split("\\s+");
3
alex
String spliter="\\s+";
String[] temp;
temp=mystring.split(spliter);
0
Vivek Maskara

Je vous donne une autre méthode pour tockenize votre chaîne si vous ne voulez pas utiliser la méthode split.Voici la méthode

public static void main(String args[]) throws Exception
{
    String str="This is     different type   of file.Can not split  it    using ' '(white space)";
    StringTokenizer st = new StringTokenizer(str, " "); 
    while(st.hasMoreElements())
    System.out.println(st.nextToken());
}
 }
0
saurabh j

vous pouvez utiliser
replaceAll (String regex, String replacement) méthode de la classe String pour remplacer les espaces multiples par de l'espace et ensuite vous pouvez utiliser la méthode split.

0
Techie Manoj