Подтвердить что ты не робот

Разделить строку на отдельные слова Java

Я хотел бы знать, как разделить большую строку на ряд меньших строк или слов. Например:

Я хочу погулять с моей собакой.

Я хочу иметь строку: "I", другая строка: "want" и т.д.

Как мне это сделать?

4b9b3361

Ответ 1

Используйте метод split()

Например:

String s = "I want to walk my dog";
String[] arr = s.split(" ");    

for ( String ss : arr) {
    System.out.println(ss);
}

Ответ 2

Как более общее решение (но только ASCII!), чтобы включить любые другие разделители между словами (например, запятые и точки с запятой), я предлагаю:

String s = "I want to walk my dog, cat, and tarantula; maybe even my tortoise.";
String[] words = s.split("\\W+");

Регулярное выражение означает, что разделителями будет все, что не является словом [\ W], в группах по крайней мере одного [+]. Поскольку [+] жадный, это займет, например, ';' и "вместе" как один разделитель.

Ответ 3

Регулярное выражение также может быть использовано для разделения слов.

\w можно использовать для сопоставления символов слова ([A-Za-z0-9_]), так что пунктуация удаляется из результатов:

String s = "I want to walk my dog, and why not?";
Pattern pattern = Pattern.compile("\\w+");
Matcher matcher = pattern.matcher(s);
while (matcher.find()) {
    System.out.println(matcher.group());
}

Выходы:

I
want
to
walk
my
dog
and
why
not

См. Документацию Java API для Pattern

Ответ 4

См. мой другой ответ, если ваша фраза содержит акцентированные символы:

String[] listeMots = phrase.split("\\P{L}+");

Ответ 5

Еще один метод, используя StringTokenizer:

String s = "I want to walk my dog";
StringTokenizer tokenizer = new StringTokenizer(s);

while(tokenizer.hasMoreTokens()) {
    System.out.println(tokenizer.nextToken());
}

Ответ 6

Вы можете использовать метод split(" ") класса String и можете получить каждое слово в качестве кода, приведенного ниже:

String s = "I want to walk my dog";
String []strArray=s.split(" ");
for(int i=0; i<strArray.length;i++) {
     System.out.println(strArray[i]);
}

Ответ 7

Используйте split()

String words[] = stringInstance.split(" ");

Ответ 8

Чтобы включить любые разделители между словами (например, все, кроме всех строчных и строчных букв), мы можем сделать:

String mystring = "hi, there,hi Leo";
String[] arr = mystring.split("[^a-zA-Z]+");
for(int i = 0; i < arr.length; i += 1)
{
     System.out.println(arr[i]);
}

Здесь регулярное выражение означает, что разделители будут чем-либо, что не является верхней или нижней буквой [^a-zA-Z], в группах по меньшей мере одного [+].

Ответ 9

Вы можете использовать класс StringUtils Apache commons

    String[] partsOfString = StringUtils.split("I want to walk my dog",StringUtils.SPACE)

Ответ 10

String [] str = s.split("[^ a-zA-Z] +");