angielską wersję
Dla wersja angielska można zrobić z dość prostym Regex. I może zostały pominięte niektóre niestandardowe separatory ale:
public static int getWordCount(String str) {
return str.split("[\\s,;-]+").length;
}
Regex wyjaśnienie:
Podział jeśli znaleźć żadnego w grupie []
:
[
\\s Any whitespace character or
, A comma
; or a semi-colon
]
+ Followed by any patterns in the group any number of times
chińska wersja
Dla chińska wersja, musisz określić, co separato rs są. Jeśli otrzymasz kod znaku Unicode chińskich separatorów i dodasz je do powyższego wyrażenia regularnego, uzyskasz pożądane wyniki.
Testy
System.out.println(getWordCount("This is a sentence"));// 4
System.out.println(getWordCount("This is a sentence")); // 4
System.out.println(getWordCount("This is a ,,sentence")); // 4
w chińskich (?) Tekstu ma separator pomiędzy słowami? –
Nie, nie ma separatora. Skopiowałem dokładne ciągi. – jaibatrik
W tym przypadku chciałbym znaleźć język oparty na tym, które runy unicode są używane w łańcuchu.Następnie użyj tych informacji, aby określić sposób analizowania ciągu znaków. –