Найти подстроку

  • 24
  • Недоступна
Метод getPartOfString должен возвращать подстроку начиная с символа после 1-го пробела и до конца слова, которое следует после 4-го пробела. Пример: "JavaRush - лучший сервис обучения Java." Результат: "- лучший сервис обучения"
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (200)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Рылов Кирилл
Уровень 35
15 января, 11:52
antlantis
Уровень 25
26 декабря 2021, 10:39
Ребята, подскажите пожалуйста кто разобрался - как учесть 2 пробела подряд и как учесть случай, когда предложение начинается с пробела? ведь если начинается с пробела - то после 4 пробела идёт 4-ое по счету слово. то есть после разрезания строки на слова - проверяем на условие "длина массива < 4", а не <5, которое требует компилятор
Pavel S.
Уровень 34, Оренбург, Russian Federation
8 января, 13:23
в таком случае я бы использовал trim() в исходной строке, потом после split'a можно для каждой подстроки в массиве прогнать тот же trim(), а уже потом делать основную работу.
antlantis
Уровень 25
8 января, 13:47
Павел, благодарю!!!
Valeriy
Уровень 31, Киев
13 января, 20:44
Pattern pattern = Pattern.compile(" .[^ ]* .[^ ]* .[^ ]* .[^ ]*");
Matcher matcher = pattern.matcher(string);
if(matcher.find()) result = string.substring(matcher.start()+1, matcher.end());
Sergey Kornilov
Уровень 37, Petropavlovsk, Казахстан
13 декабря 2021, 10:53
Всего эту задачу решили 12495 учеников.
Олексій Моцьор
Уровень 24
11 декабря 2021, 20:17
зделал через split(), регулятор принял.
Александр
Уровень 35, Москва, Russian Federation
28 ноября 2021, 18:25
У меня возникли такие нюансы по валидатору: 1. Требовал именно такую проверку
if (string == null)
           throw new TooShortStringException();
2. public static class TooShortStringException extends
RuntimeException
3. После построения строки ее нужно подредактировать, удалив последний пробел. Тут канает только
result.trim();
Я попытался сделать шаг влево-вправо просто затерев последний символ
stringBuilder.append("\b")
но был расстрелян валидатором
Sulf8
Уровень 35, Самара, Россия
23 ноября 2021, 19:17
Написал быстренько через регулярку. А дальше убил 1,5 часа на валидатор: не хотел то 3, то 4 пункт принимать. Хоть тресни. Пришлось писать через сплит по пробелу, принял сразу.
imik
Уровень 35, Ufa
3 декабря 2021, 14:36
аналогично, через substring не принял.. допускаю, может нужно было опять поизголяться (trim в конце на автомате ставлю уже) вот, кстати, нашёл в инете код в одну строку (сам изначально делал через char[]) как подсчитать количество пробелов - красиво... int count = string.length() - string.replaceAll(" ", "").length();
Andrii Honyshko
Уровень 25, Киев
13 ноября 2021, 14:33
В случае, если строка, переданная в метод getPartOfString, содержит менее 4 пробелов, должно возникнуть исключение TooShortStringException. в условиях такого не указано, но при валидации ругаеться
Сергей
Уровень 31, Москва
28 сентября 2021, 07:22
Сначала сделал проверку на null, Empty и количество пробелов в одном if, не прошло, вынес проверку пробелов в отдельный if и все прокатило. Кто поможет, почему так?
Виноградина
Уровень 48, Berkeley, United States
21 сентября 2021, 22:20
четвертый пробел без регулярок
int b = 0;
for (int i = 0; i < 4; i++) {
            b = string.indexOf(' ', b);
            if (b < 0) throw new TooShortStringException();
            b += 1;
        }
Anonymous #2720272
Уровень 33
14 сентября 2021, 18:55
Matcher matcher = Pattern.compile("(\\s[^\\s.]+){4}").matcher(string);
Если кто-то захочет регулярку:)