2011-09-20 9 views
21

Chciałbym parsować cały plik na podstawie wszystkich możliwych ograniczników takich jak przecinki, dwukropki, półkolonie, kropki, spacje, itp.Java string.split - według wielu znaków separatora

Załóżmy, że mam hipotetyczną linię ciągów "Cześć, X Jak się masz?" Powinienem otrzymać tablicę wyjściową z elementami Hi, X, How, how, are, any i you.

Jak określić wszystkie te ograniczniki w metodzie String.split?

Z góry dziękuję.

Odpowiedz

23

String.split bierze wyrażenie regularne, w tym przypadku, chcesz znaków non-word (regex \W) być podzielona, ​​tak to po prostu:

String input = "Hi,X How-how are:any you?"; 
String[] parts = input.split("[\\W]"); 

Jeśli chcesz być bardziej wyraźne, można użyj dokładnych znaków w wyrażeniu:

String[] parts = input.split("[,\\s\\-:\\?]"); 
+0

dlaczego operator lub w powyższym wyrażeniu? Czy są one niezbędne? –

+0

@Hovercraft - nie, ale dla mnie łatwiej jest czytać, więc to jest to, z czym się zgadzam. –

+0

@Mark Czy to \ W regex bierze pod uwagę liczbę jako znak niebędący słowem? Co się stanie, jeśli chcę zezwolić na numer? – u449355

Powiązane problemy