2012-02-05 40 views
10

tôi chủ yếu muốn chia tay một chuỗi dựa trên câu, do đó (vì lợi ích của những gì tôi đang làm), bất cứ khi nào có một !, ., ?, :, ; .Java - Chia Chuỗi dựa trên nhiều delimiters

Tôi làm cách nào để đạt được điều này với nhiều mục để chia mảng bằng?

Cảm ơn!

Trả lời

30

String.split mất một regex để chia trên, vì vậy bạn có thể chỉ đơn giản là:

mystring.split("[!.?:;]"); 
6

Đối số của String.split là một regex, vì vậy bạn có thể tạo mẫu phù hợp với bất kỳ ký tự nào trong số đó.

s.split("[.!:;?]"); 
7

Guava'sSplitter là một chút more predictable hơn String.split().

Iterable<String> results = Splitter.on(CharMatcher.anyOf("!.?:;")) 
    .trimResults() // only if you need it 
    .omitEmptyStrings() // only if you need it 
    .split(string); 

và sau đó bạn có thể sử dụng Iterables.toArray hoặc Lists.newArrayList để bọc các kết quả đầu ra như thế nào bạn muốn.

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