Ни один из этих ответов, по-видимому, не определяет, что ОП может означать «слово».Как уже говорили другие, «граница слова» может быть запятой и, конечно, не может быть пробелом или даже «пробелом» (т. Е. Также символами табуляции, перевода строки и т. Д.)
В самом простом я бы сказал, что слово должно состоять из любых букв Unicode и любых цифр.Даже это может быть неправильно: String
может не квалифицироваться как слово, если оно содержит цифры или начинается с цифры.Кроме того, как быть с дефисами или апострофами, которых, по-видимому, существует несколько вариантов во всем Unicode?Разные дискуссии такого рода и многие другие будут применяться не только к английскому языку, но и ко всем остальным языкам, включая не человеческий язык, научную запись и т. Д. Это большая тема.
Но для начала может быть так(Примечание написано на Groovy):
String givenString = "one two9 thr0ee four"
// String givenString = "oňňÜÐæne;:tŵo9===tĥr0eè? four!"
// String givenString = "mouse"
// String givenString = "&&^^^%"
String[] substrings = givenString.split( '[^\\p{L}^\\d]+' )
println "substrings |$substrings|"
println "first word |${substrings[0]}|"
Это нормально для первого, второго и третьего givenString
с.Для «&& ^^^%» говорится, что первое «слово» - это строка нулевой длины, а второе - «^^^».На самом деле, ведущий токен нулевой длины - это способ String.split
сказать «ваша строка начинается не с токена, а с разделителем».
NB в регулярном выражении \p{L}
означает «любая буква Юникода».Параметр String.split
- это, конечно, то, что определяет «шаблон разделителя» ... то есть группу символов, которая разделяет токены.
NB2 Проблемы с производительностью не имеют значения для такого обсуждения и почти наверняка для всех контекстов.
NB3 Моим первым портом захода был пакет StringUtils
от Apache Commons.Вероятно, у них будут самые эффективные и лучшие инженерные решения для такого рода вещей.Но ничего не выпрыгнуло ... https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html ... хотя там может скрываться что-то полезное.