Разделить строку на части из 3 слов Java - PullRequest
0 голосов
/ 12 мая 2018

Я хочу разбить строку на 3 части в Java.

Например:

Я хочу гулять в парке с отцом

Я хочу получить строку: "I want to" и еще одну строку: "walk in the" и т. Д.

Как бы я это сделал?

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

Вот решение с использованием RegEx

String sentence = "I want to walk in the park with my father";

Pattern pattern = Pattern.compile("\\w+ \\w+ \\w+ ");
Matcher matcher = pattern.matcher(sentence);
while (matcher.find()) {
    System.out.println(matcher.group());
}

Обратите внимание, что с этим выражением последнее слово «отец» не совпадает.


Для решения без RegEx я бы использовал что-то вроде этого

String sentence = "I want to walk in the park with my father";

String[] words = sentence.split(" ");
List<String> threeWords = new ArrayList<>();

int length = words.length;
for (int ind = 2; ind < length; ind += 3) {
    threeWords.add(words[ind - 2] + " " + words[ind - 1] + " " + words[ind]);
}

if (length % 3 == 1) {
    threeWords.add(words[length - 1]);
} else if (length % 3 == 2) {
    threeWords.add(words[length - 2] + " " + words[length - 1]);
}
0 голосов
/ 12 мая 2018

Для меня создание временного ArrayList (он же words) и удаление 3 слов за раз, объединение их в строку и добавление его в мой окончательный ArrayList работало просто отлично, хотя, вероятно, это не очень эффективно с точки зрения производительности, он выполняет свою работу и его легко понять.

// finalWords is your result
ArrayList<String> finalWords = new ArrayList<String>();
ArrayList<String> words = new ArrayList<String>();

for(String str : "I want to walk in the park with my father".split(" "))
    words.add(str);

while(words.size() > 0)
{
    String str = "";
    for(int i = 0; i < 3; i++)
    {
        if(words.size() > 0)
        {
            str += words.get(0) + " ";
            words.remove(0);
        }
    }

    finalWords.add(str);
}

РЕДАКТИРОВАТЬ: Поскольку вы написали это:

Я знаю, как разделить его на отдельные слова,но не на группы.

в комментариях, разбить его на группы слов просто.Сначала вы разбиваете свое предложение на слова, затем объединяете эти слова в новые строки, по 3, и добавляете объединенные строки в список / массив по вашему выбору.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...