2012-10-26 9 views
5

Powiel możliwe:
How to split a String by spaceDzielenie ciąg na wielu miejscach w java

Potrzebuję pomocy podczas analizowania pliku tekstowego. Plik tekstowy zawiera dane jak

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

Mój problem polega na przestrzenie między słowami nie są podobne. Czasem jest pojedyncza spacja, a czasem podaje się wiele spacji.

Muszę podzielić ciąg w taki sposób, aby uzyskać tylko słowa, a nie spacje.

Odpowiedz

16

Spróbuj i zobacz str.split("\\s+"). Zwraca tablicę ciągów znaków (String[]).

+0

Dziękuję za pomoc ... –

+0

@SachinMhetre: Nie ma za co. :) –

3

Użyj wyrażenia regularnego.

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

Można użyć Quantifiers aby określić liczbę miejsc, które mają być podzielone na: -

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

Więc \\s+ będzie podzielić ciąg na one or more przestrzeniach

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

także Jeśli chcesz podać określone liczby, możesz podać zakres pomiędzy {}:

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

można użyć
replaceAll (regex String, String) zastępczą metodę klasy String zastąpić wielokrotne spacje z miejsca, a następnie można użyć metody podziału.

3

można użyć wyrażenia regularnego wzorca

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

wyjście

This 
is 
different 
type 
of 
file. 
+0

Twoje rozwiązanie dzieli się tylko na puste, a nie na żadne inne białe znaki, takie jak '\ t \ n \ x0B \ f \ r". Używaj zamiast tego klasy znaków '\ s' (dowolnego znaku białego), tak jak to opisują inni. 'String [] words = yourString.split (" \\ s + "); ' – jlordo

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

Daję wam inną metodę tockenize swój ciąg, jeśli nie chcesz korzystać z podziałem method.Here jest metoda

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

A dlaczego nie chciałby używać metody dzielenia, biorąc pod uwagę, że jest to lepszy sposób na pokonanie niż' StringTokenizer'? Proszę przestać używać 'StringTokenizer'. –

+0

Rohit może ci pokazać, dlaczego podział jest lepszy niż StringTokenizer –

+0

Możesz zobaczyć http://stackoverflow.com/questions/691184/scanner-vs-stringtokenizer-vs-string-split http://www.javamex.com/tutorials /regular_expressions/splitting_tokenisation_performance.shtml i http://stackoverflow.com/questions/5965767/performance-of-stringtokenizer-class-vs-split-method-in-java –