• ,

Уровень 22: план уровня и доп. материалы

План уровня:
  • Что такое mutable/imutable объекты и зачем они
  • Внутреннее устройство String, метод substring()
  • Поиск подстроки в String
  • String.format()
  • StringBulder, StringBuffer
  • Character, кодировки
  • Регулярные выражения, примеры
  • StringTokenizer, String.replace

Курс Java

Что еще можно посмотреть на досуге:
Ответы на вопросы к собеседованию по теме уровня.

Класс String в примерах

О форматировании строки читаем в этой хорошей статье.

Если что-то непонятно с манипуляциями строк, то идем по этой ссылке и читаем продолжение тут. А вот ссылка на оригинальную статью от Oracle.

Очень длинная и детально изложенная статья о кодировках. Java в этой статье не упоминается.

О создании регулярных выражений можно почитать тут:
Понять регулярные выражения — это как научиться кататься на велосипеде. Разобраться нужно, т.к. обязательно понадобится.



Нашли классную ссылку к материалу данной темы? Добавьте ее сюда в виде комментария.
Возможно, именно Ваша ссылка поможет другому человеку стать программистом и улучшить свою жизнь!

Вернуться к плану обучения

Вернуться к обучению java онлайн на JavaRush

43 комментария

Maksim_Bardin
Добрый день!
В разделе «Регулярные выражения» есть пример как задать маску для «c:\что-угодно». Написано, что символы "\" и "." нужно экранировать и получается что регулярное выражение должно выглядеть так: «c:\\\\\\.*».
Если с "\" все понятно, то с "." никак не могу разобраться, зачем ее нужно экранировать?
Вот например такой код:
public static void main(String[] args)
    {
        String s = "c:\\все что-угодно";

        System.out.println(s.matches("c:\\\\\\.*"));

        System.out.println(s.matches("c:\\\\.*"));

        

        System.out.println(s.matches("\\.*"));

        System.out.println(s.matches(".*"));

    }


Для первой маски (из лекции) вывод — false, для второй где мы экранируем только "\" вывод — true.
Если взять более общий случай: маска для любой строки согласно лекции должна быть "\\.*", но в этом случае вывод опять false, а с маской ".*" — true.
Получается что в лекции написано неправильно или я что-то не понимаю?
VovanZzZurka
  • VovanZzZurka
  • 0
  • Комментарий отредактирован 2014-12-29 22:09:08 пользователем VovanZzZurka
Да, в лекции ошибка.
Ты же сам проверил.
svorobei
там дальше в лекции аналогичные ошибки…
прошло 2 года, так и не исправили!
Diana , Fry на помощь!!!
Iskandar
время идет, ошибка висит ))
imp
печаль беда…
Seryal
Лекция понравилась, куча полезного и интересного материала. Но, почему эта лекция не идет после 17 перед работой с I/O — где необходима работа со строками, регулярные выражения, кодировки. Как то логика изложения материала хромает, такое чувство, что начиная с 17 лекции последовательность изложения материала была сгенерирована Random))
formakidov
Так сделано специально, чтобы ты научился пользоваться интернетом и другими источниками. На работе перед выполнением задачи никто не будет описывать темы, которые тебе понадобятся.
Seryal
Замечание было по поводу последовательности изложения материала, а интернетом я думаю тут каждый умеет пользоваться)) так что не понял к чему вообще твой комментарий.
voloshima
  • voloshima
  • 0
  • Комментарий отредактирован 2014-09-28 23:01:29 пользователем voloshima
Опечатка в лекции 22, урок 8(?): вместо StrignBilder нужно StringBuilder. Там же дальше SringBuilder.
Fry
исправил
INSIDIUS
О создании регулярных выражений можно почитать тут:
Шпаргалка — битая ссылка
Bolodya
По регулярным выражениям вопрос, в лекции дан пример:
joxi.ru/V2VagqNSdaQDmv

Не совсем понятно, зачем там два слеша? При их наличии не получается получить указанный результат.
Если их убрать, все ок.

Опечатка? Или?
Pavel255
  • Pavel255
  • 0
  • Комментарий отредактирован 2016-09-06 00:42:11 пользователем Pavel255
Ошибка в лекции, которая реально может сбить с толку, когда видишь столько слешей, как в некоторых примерах здесь)
Если мы хотим использовать точку в качестве управляющего символа регулярного выражения (один произвольный символ), то ее экранировать не надо.
String s = "Good news everyone!";
        String s2 = s.replaceAll ("e.","EX");
        System.out.println(s2);

А вот если надо найти точку, как именно символ точки в тексте строки, то ее надо экранировать, например:
String s3 = "Good ne.ws eve.ryone!";
        String s4 = s3.replaceAll ("e\\.","EX");
        System.out.println(s4);

Вывод:
Good nEXs EXEXyonEX
Good nEXws evEXryone!
isaenkovl
Как интересно получается, Пользователей на сайте 235 тысч. А ссылку на «O'Reilly — Регулярные выражения. Сборник рецептов» на яндекс диске просмотрели только 142 раза
isaenkovl
Кому лень погуглить)))
Шпаргалка
DefNeo
Хорошая Шпаргалка)) Спасибо
bskydive
  • bskydive
  • 0
  • Комментарий отредактирован 2014-12-11 23:21:14 пользователем bskydive
битая ссылка в лекции (часть 11)!!!

upload.wikimedia.org/wikipedia/ru/e/ee/RegExp_tutorial.png
EmperioAf
+
up
ninjava
  • ninjava
  • 0
  • Комментарий отредактирован 2015-08-31 00:39:40 пользователем ninjava
ProkopchukAndriy
Опечатка в лекции 22, урок 8 в 4 примере… в строке s2.deleteCharAt(«2»);
deleteCharAt принимает int, если не ошыбаюсь…
Overlord
То чувство когда ты дошел до урока с дополнительными материалами, а многие ссылки были тобой посещены в процессе выполнения упражнений:)
UnlaR
Опечатка в 11 блоке
Stringregexp = «c:\\\\\\.*»;
может быть имель ввиду
String regexp = «c:\\\.*»;
olegvasylkov

Fry подправьте, пожалуйста
Fry
исправил
olegvasylkov
лекция по кодировкам написана не понятно. посмотрел на help.javarush многие люди как и я, восприняли информацию о преобразовании наоборот. и простейшая задачка level22.lesson13.task02 оказалась бредом.
предлагаю добавить конкретные примеры в лекцию
olegvasylkov
перечитал все еще раз. беру свои слова обратно
kelebro
Вот еще полезная ссылка на начальном этапе понимания регулярных выражений:
Your text to link...
P.S.: во всяком случае мне помогла) может еще кому будет полезна
lexel
Это очень полезный туториал. Только после того как я прошел его, то начал более менее что-то понимать. Не жалко было даже 4$ пожертвовать. Ресурс действительно классный.
generatorideas
Очень классный! Плюсую!
Mr_GoldMan
Супер, спасибо!!!
lexel
regex101.com
очень удобный ресурс для тестирования регулярок, а так же есть готовые библиотеки
MaxST1994
Токенайзер хорошо и удобно работает, да вот только выкидывает все пропущенные пробелы? Как их сохранить?
Norg
Третий параметр конструктора (булев) передайте true, сохранит разделители.
afacenomore
StringBulder — ошибка в слове.
Alejandro_Kolio
Лекция 10. Level 22

Исправьте пож-ста вот эту (помаркал желтым) ошибку в лекции 10
ArsenalFC
Лекция 12
Может кто-нибудь объяснит, зачем в примере вы экранируете "."?



Ваш пример для replaceALL в идее выдает другой результат:



Если точку не экранировать:

Eli_Ver
Присоединяюсь))
Yuri_0504
Вроде как в Java 8 (или 7) поменяли логику работы substring — теперь возвращаемая строка содержит ссылку на новый усеченный char-массив.
Core
  • Core
  • 0
  • Комментарий отредактирован 2016-11-09 15:18:41 пользователем Core
В лекции JavaRush и в лекции на JavaInfo(вот тут) есть еще следующая ошибка:
\w — любая буква (неправильно: это неполное описание)
\w — любая буква или цифра (вот так правильно)

соответственно и здесь:
\W — любая небуква (неправильно)
\W — любая небуква или нецифра (вот так правильно)
Это можно увидеть, например, хотя бы даже отсюда: oracle
Nullptr
Для тех, кто хочет научиться использовать Regex, есть небольшой хороший практико-теоретический курс (2-3 часа) на сайте regexone.com/ (на английском языке). Правильность выполнения заданий проверяется сразу на сайте, а если все таки не понятно, как писать то или иное выражение — есть подсказки. Так же там разбирается задание из лекции level22.lesson13.task03. Всем советую.
Quite

Опечатка в лекции №2
Quite
  • Quite
  • 0
  • Комментарий отредактирован 2016-11-27 12:42:42 пользователем Quite
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.