ДЗ 6. Регулярные выражения. Работа со строками
Регулярные выражения
Используя регулярные выражения реализуйте следующие функции:
-
isTrueCat - Проверяет строку, содержит ли она «cat» в качестве подстроки, игнорируйте регистр. Пример строк, которые подходят: «cat», «cat and cat», «Cat», «theCATisHERE». Пример строк, которые не подходят: «kat», «», «cot».
-
catculator - Должен вернуть суммарное количество котов, упомянутое в строке. Например, для строки “Valentina has 3 cats, but Nikolay has only 1 cat” мы должны вернуть 4, а для строки “Alexander has 1 dog, but want to have 1 cat” - нужно вернуть 1.
-
skynet Заменить все вхождения слова «human» на слово «computer». Примеры замен: «I need to understand the human mind» -> «I need to understand the computer mind», «humanity» -> «humanity»
-
removeDuplicates Заменить все вхождения нескольких одинаковых букв подряд на одну букву. Примеры замен: «attraction» -> «atraction», «buzzzz» -> «buz».
-
isEmail - Проверяет является ли переданная строка email адресом
-
validateForDuplicates - Выделяет тегом <strong> повторяющиеся слова. Примеры: “Тhis is a test” -> “This is a test”, “Тhis is is a test” -> “This is <strong>is</strong> a test”
Операции со строками и другими последовательностями
- isLowerCase - Проверьте, что строка состоит только из строчных букв
- isUpperCase - Проверьте, что cтрока состоит только из заглавных букв
- isCamelCase - Строка начинается с заглавной буквы, а все остальные строчные
- isMixedCase - Проверьте, что в строке чередуются буквы, т.е. первая заглавная, вторая строчная, третья заглавная и т.д. Или наоборот, первая строчная, вторая заглавная, третья строчная и т.д. Используйте конструкцию Character.isUpperCase(‘z’), чтобы определить, верно ли, что символ является заглавной буквой. (аналогично Character.isLowerCase())
- isPalindrome Дана строка, проверьте, является ли она палиндромом. Т.е. верно ли, что если ее прочитать с конца в начало, то получится та же строка. Пробельные символы игнорируйте.
- isStrictPalindrome Аналогично функции палиндрома, но функция имеет второй логический параметр strict, если он false, то при проверке нужно игнорировать регистр букв и пробелы.
- isAllCharactersPaired Дана строка, проверьте, верно ли, что в ней все символы идут парами одинаковых.
Например, для строки
aaBBccDD55**
нужно вернутьTrue
, а для строкиaaBBcC**hF
нужно вернутьFalse
. - replaceBinaryNumbers Напишите функцию, которой дается строка. Она должна поменять местами все
использования 0 на 1, а все использования 1 на 0. Например,
abc01xyz000111
должно превратиться вabc10xyz111000
. - replace Добавьте в функцию replaceBinaryNumbers два параметра: символы для замены. Т.е. заменять можно не только 0 на 1 и наоборот, а любой символ на любой. На самом деле, решить нужно эту задачу. А вариант с 0 и 1 нужен только для тренировки.
- Чтобы решить задачу, попробуйте разобраться либо в методе
replace
для строк. Либо в паре методовtranslate
иmaketrans
. Второй вариант предпочтительней, но чуть сложнее, чтобы разобраться.
- Чтобы решить задачу, попробуйте разобраться либо в методе
- makeDragonCurve Кривая дракона. В функцию передается один аргумент, целое число \(n\ge0\). Если передан 0, нужно вернуть строку
R
. Иначе нужно повторить \(n\) раз следующую операцию: допустим, на предыдущем шаге мы получили строку \(S\). Нужно к ней приписать буквуR
, а потом приписать снова \(S\), но, во-первых, прочитанную с конца, а, во-вторых, в которой буквыR
заменены на буквыL
и наоборот. Например, при \(n=1\) получаетсяRRL
какR
+R
+L
, при \(n=2\) получаетсяRRLRRLL
=RRL
+R
+RLL
и т.д. - makeGrayCode Коды Грея, часть 1. Создайте функцию, в которую передается один аргумент, целое число \(n\ge0\). Если передан 0, нужно вернуть строку
0
. Иначе нужно повторить \(n\) раз следующую операцию: приписать список из предыдущего шага к самому себе, вставив в середине число с номером шага. На примере это выглядит так:n = 0 "0" n = 1 "0 1 0" n = 2 "0 1 0 2 0 1 0" n = 3 "0 1 0 2 0 1 0 3 0 1 0 2 0 1 0" ...