Хуан Хуанович

  • 10
  • Недоступна
В метод main первым параметром приходит имя файла. В этом файле каждая строка имеет следующий вид: имя день месяц год где [имя] - может состоять из нескольких слов, разделенных пробелами, и имеет тип String. [день] - int, [месяц] - int, [год] - int данные разделены пробелами. Заполнить список PEOPL
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (131)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Riccio26 уровень, Москва
10 мая, 16:50
Тут достаточно простых relpace'ов:
personName = personList.get(i).replaceAll("\\d", "").trim();
personBirthDate = format.parse(personList.get(i).replace(personName, ""));
И всю логику можно разместить в одном цикле.
Торник20 уровень, Москва
11 апреля, 03:32
Подскажите,где можно почитать годноту про регулярки и патерны на Русском? Книга уже на примете,но чтение займет некоторое время,хотелось бы уже не много начать разбираться.
Leo Brainstorm20 уровень
28 апреля, 21:44
https://regexone.com мне вот это поняло оч легко и быстро врубиться. делаешь задачки как тут, сверяешься с подсказками и понимание приходит =)
Торник20 уровень, Москва
11 апреля, 03:30
if(Character.isDigit(read.charAt(i))) Может кому поможет. Без регулярок все решается .Всего несколько строк
Николай22 уровень
17 марта, 21:32
Зачем регулярки? прошелся сплитом - последние 3 значения это дата, все остальные - это имя.
Эмиль Кан29 уровень, Москва
17 марта, 21:00
String pattern = "(\\D+)\\s(\\d{1,2})\\s(\\d{1,2})\\s(\\d+)";
Tema Lebedev20 уровень
21 апреля, 16:42
(\\D+)\\s([\\d|\\s]+) и вторую группу парсить через simpleDateFormat
Antony.Glim29 уровень, Санкт-Петербург
20 февраля, 16:44
PEOPLE.add(new Person(stringBuilder.toString(), new Date(year - 1900, month - 1, date)));
Эта строчка прекрасна блин! Здесь прекрасно все!
Тагир23 уровень
31 января, 20:50
Чтобы не использовать trim(), вместо split(" "), лучше применить split("\\s+").
Kad22 уровень
29 января, 22:56
Мне казалось, что все нормально, валидатор ругался на пункты: 5. Программа должна заполнить список PEOPLE данными из файла. 6. Программа должна правильно работать с двойными именами, например Анна-Надежда Оказывается, хотел trim(). Спасибо, что посоветовали в комментах.
Артур22 уровень, Санкт-Петербург
9 декабря 2018, 19:55
Вот такая страшная регулярка. Можно было обойтись \\d+, вместо \\d\\d?
Pattern pattern = Pattern.compile("^(.*) (\\d\\d? \\d\\d? \\d{4})$");
        while (reader.ready()) {
            Matcher matcher = pattern.matcher(reader.readLine()); //считанную строку сразу в матчер загоняю
            if (matcher.find()) //проверяю строку на соответствие моей регулярке.
Дальше группу один в имя записать, группу 2 распарсить как дату через SimpleDateFormat и записать в дату рождения, добавлять через новый объект Person.
DancingShaman23 уровень
13 ноября 2018, 22:49
Я - человек простой, если задача решается с первой попытки без танца с бубном, то я её лайкаю, если приходиться сидеть до красноты глаз и бороться с валидатором, то пишу гневный коммент, но на этот раз - лойс за задачу. Искал через такую регулярку (^.+(\s.+\s.+)?)\s(\d+)\s(\d+)\s(\d+) - она кривая и неоптимизованная, но работает же :D