2009-09-03 52 views
6

Tôi có một vấn đề nhỏ ở đây. Tôi cần phải chuyển đổi một chuỗi đọc từ bàn điều khiển thành từng ký tự của chuỗi. Ví dụ chuỗi: "aabbab" Tôi muốn chuỗi này thành mảng chuỗi. Tôi sẽ làm như thế nào?Làm thế nào để chuyển đổi một chuỗi thành một mảng các chuỗi có chứa một ký tự mỗi

+3

Bạn nên chọn câu trả lời của Joachim như một quan chức nếu nó làm việc cho bạn. – VonC

Trả lời

5

Nếu bởi mảng String bạn có nghĩa là mảng của char:

public class Test 
{ 
    public static void main(String[] args) 
    { 
     String test = "aabbab "; 
     char[] t = test.toCharArray(); 

     for(char c : t) 
      System.out.println(c);  

     System.out.println("The end!");  
    } 
} 

Nếu không, String.split() chức năng có thể biến đổi một chuỗi thành một mảng String

Xem những String.split ví dụ

/* String to split. */ 
String str = "one-two-three"; 
String[] temp; 

/* delimiter */ 
String delimiter = "-"; 
/* given string will be split by the argument delimiter provided. */ 
temp = str.split(delimiter); 
/* print substrings */ 
for(int i =0; i < temp.length ; i++) 
    System.out.println(temp[i]); 

Số input.split("(?!^)") được đề xuất bởi Joachim trong his answer được dựa trên:

  • một '?!' zero-width lookahead tiêu cực (xem Lookaround)
  • dấu sót '^' như một Anchor để phù hợp với sự khởi đầu của chuỗi mô hình regex được áp dụng cho

Bất kỳ nhân vật mà không phải là người đầu tiên sẽ được chia. Một chuỗi rỗng sẽ không được phân chia mà trả về một mảng trống.

+1

thats một mảng các ký tự, không phải là một mảng của các chuỗi – Chii

+0

@Chii: true, tôi đã minh họa cả hai kết quả ngay bây giờ. 'char []' và 'Chuỗi []' – VonC

+0

minh họa rất tốt. – Zaki

0

Bạn có thể sử dụng String.split (String regex):

String input = "aabbab"; 
String[] parts = input.split("(?!^)"); 
+1

Vì mỗi ký tự là một dấu tách nên không có ký tự nào là dữ liệu, do đó bạn sẽ nhận được một mảng trống. –

+0

Bạn chính xác. Regex của bạn tốt hơn. –

+0

Cảm ơn bạn không biết rằng nó có thể được sử dụng với phân chia nhưng tại sao nó được chia tách với?! ^? cos một chuỗi không có trong đó? – gingergeek

21
String[] result = input.split("(?!^)"); 

Điều này không được chia String nhập trên tất cả các Strings trống mà không phải do sự bắt đầu của chuỗi.

+0

Cảm ơn các bạn nó hoạt động như magic.Cool – gingergeek

+1

Regex tốt, +1. – VonC

+0

Khi tôi làm. Kiểm tra chuỗi = "Đây là một thử nghiệm"; và sau đó tôi thực hiện Chuỗi [] test2 = test.split ("(?!^) ");); Mảng chỉ giữ các ký tự từ từ đầu tiên ..? –

2

Bạn có nghĩa là bạn muốn thực hiện "aabbab". ToCharArray(); ? Mà sẽ trả về một mảng ký tự. Hoặc bạn có thực sự muốn mảng kết quả chứa các đối tượng chuỗi ký tự đơn không?

15
String x = "stackoverflow"; 
String [] y = x.split(""); 
Các vấn đề liên quan