Вернуть массив слов из строки
Напишите функцию, которая принимает строку и возвращает массив слов.
Под словом подразумеваются множество символов отличных от пробела. Между словами может стоять больше одного пробела.
Параметры: 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);