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.
Essayez de voir str.split("\\s+")
. Il renvoie un tableau de chaînes (String[]
).
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
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.
Utilisez une expression régulière.
String[] words = str.split("\\s+");
String spliter="\\s+";
String[] temp;
temp=mystring.split(spliter);
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());
}
}
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.