Вернуть массив слов из строки

Напишите функцию, которая принимает строку и возвращает массив слов.

Под словом подразумеваются множество символов отличных от пробела. Между словами может стоять больше одного пробела.

Параметры: String s.

Возвращаемый тип: String[].

Пример: Входные данные s = " test "; Выходные данные result = [ "test" ];

Пробую через split и replaceAll но, но не получается Как можно решить через string.toCharArray()?


Ответы (1 шт):

Автор решения: rhino_rus

Я так понимаю, проблема именно в том, что у Вас не получается в методе split() обработать множество пробелов.

Регулярное выражение для обработки более, чем одного пробельного символа, выглядит следующим образом:

String[] result = s.split("[ ]+");

UPD: Решение через toCharArray()

String s = "one two    three";

// Используем список, поскольку изначально неизвестно количество слов.
ArrayList<String> words = new ArrayList<>();

StringBuilder currentWord = new StringBuilder();
for(Character letter : s.toCharArray()){
    // Прерываем формирование слова, если встретили пробел
    if(letter.equals(' ')){
        if(currentWord.length() > 0){
            // Записываем слово в список, если оно содержит хотя бы 1 символ
            words.add(currentWord.toString());
            currentWord = new StringBuilder();
        } 
    } else{
        currentWord.append(letter);
    }
}
// При завершении не забываем, что в билдере могло остаться слово.
if(currentWord.length() > 0){
    words.add(currentWord.toString());
}
// По условию нужен массив, а не список. Преобразуем.
String[] wordsArr = words.toArray(String[]::new);
→ Ссылка