2012-10-26 19 views
5

Eventuali duplicati:
How to split a String by spacestringa Splitting su più spazi in java

ho bisogno di aiuto durante l'analisi di un file di testo. Il file di testo contiene dati come

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

Il mio problema è spazi tra le parole non sono simili. A volte c'è spazio singolo e talvolta vengono assegnati più spazi.

Ho bisogno di dividere la stringa in modo tale da ottenere solo parole, non spazi.

risposta

16

Provare e vedere str.split("\\s+"). Restituisce una serie di stringhe (String[]).

+0

Grazie per l'aiuto ... –

+0

@SachinMhetre: prego. :) –

3

Utilizzare un'espressione regolare.

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

È possibile utilizzare Quantifiers per specificare il numero di spazi che si desidera dividere in: -

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

Quindi, \\s+ dividerà la stringa su one or more spazi

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

Inoltre, se vuoi specificare alcuni numeri specifici puoi dare il tuo intervallo tra {}:

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

è possibile utilizzare
replaceAll (String regex, la sostituzione String) metodo della classe String per sostituire i molteplici spazi con lo spazio e quindi è possibile utilizzare il metodo di divisione.

3

è possibile utilizzare schema di espressione regolare

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]); 
    } 
} 

uscita

This 
is 
different 
type 
of 
file. 
+0

La soluzione si divide solo da spazi vuoti, non da altri caratteri di spazi vuoti come '\ t \ n \ x0B \ f \ r'. Usa invece la classe di carattere '\ s' (qualsiasi carattere di spaziatura), come descritto dagli altri. 'String [] words = yourString.split (" \\ s + "); ' – jlordo

0
String spliter="\\s+"; 
String[] temp; 
temp=mystring.split(spliter); 
0

Vi do un altro metodo per tockenize la stringa se non volete usare la scissione method.Here è la metodo

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

E perché non vorrebbe usare il metodo split, dato che è un modo migliore per andare di' StringTokenizer'? Si prega di smettere di usare 'StringTokenizer'. –

+0

Rohit può illustrare il motivo per cui split è migliore di StringTokenizer –

+0

Puoi vedere http://stackoverflow.com/questions/691184/scanner-vs-stringtokenizer-vs-string-split http://www.javamex.com/tutorials /regular_expressions/splitting_tokenisation_performance.shtml e http://stackoverflow.com/questions/5965767/performance-of-stringtokenizer-class-vs-split-method-in-java –