2012-10-26 36 views
5

thể trùng lặp:
How to split a String by spacechuỗi Splitting trên nhiều khoảng trống trong java

tôi cần sự giúp đỡ trong khi phân tích một file văn bản. Tệp văn bản chứa dữ liệu như

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

Vấn đề của tôi là khoảng cách giữa các từ không giống nhau. Đôi khi có một không gian duy nhất và đôi khi có nhiều không gian.

Tôi cần chia chuỗi theo cách sao cho tôi chỉ nhận được từ, chứ không phải dấu cách.

Trả lời

16

Thử và xem str.split("\\s+"). Nó trả về một mảng các chuỗi (String[]).

+0

Thanx để được trợ giúp ... –

+0

@SachinMhetre: Bạn được chào đón. :) –

3

Sử dụng cụm từ thông dụng.

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

Bạn có thể sử dụng Quantifiers để xác định số lượng chỗ bạn muốn chia trên: -

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

Vì vậy, \\s+ sẽ chia chuỗi của bạn trên one or more gian

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

Ngoài ra, nếu bạn muốn chỉ định một số số cụ thể, bạn có thể cung cấp phạm vi của mình giữa {}:

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

bạn có thể sử dụng
phương thức replaceAll (String regex, String replacement) để thay thế nhiều không gian bằng dấu cách và sau đó bạn có thể sử dụng phương pháp tách.

3

bạn có thể sử dụng mô hình 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]); 
    } 
} 

đầu ra

This 
is 
different 
type 
of 
file. 
+0

Giải pháp của bạn chỉ chia nhỏ theo khoảng trắng, không phải bởi bất kỳ ký tự trắng nào khác như '\ t \ n \ x0B \ f \ r'. Thay vào đó, hãy sử dụng lớp ký tự '\ s' (bất kỳ ký tự khoảng trống nào), như được mô tả bởi các ký tự khác. 'String [] words = yourString.split (" \\ s + "); ' – jlordo

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

tôi đem lại cho bạn một phương pháp khác để tockenize chuỗi của bạn nếu bạn không muốn sử dụng sự chia rẽ method.Here là phương thức

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

Và tại sao anh ta không muốn sử dụng phương pháp phân chia, vì nó là một cách tốt hơn để đi hơn' StringTokenizer'? Vui lòng ngừng sử dụng 'StringTokenizer'. –

+0

Rohit u có thể minh họa tại sao chia nhỏ hơn StringTokenizer –

+0

Bạn có thể xem http://stackoverflow.com/questions/691184/scanner-vs-stringtokenizer-vs-string-split http://www.javamex.com/tutorials /regular_expressions/splitting_tokenisation_performance.shtml và http://stackoverflow.com/questions/5965767/performance-of-stringtokenizer-class-vs-split-method-in-java –

Các vấn đề liên quan