Поиск в строках
Часть раздела Логика и управление потоком путешествия по Swift на Coddy — урок 3 из 56.
Три быстрых способа проверить, содержится ли подстрока внутри другой:
let email = "alice@coddy.tech"
print(email.contains("@")) // true
print(email.hasPrefix("alice")) // true
print(email.hasSuffix(".tech")) // truecontains принимает любую подстроку, в то время как hasPrefix и hasSuffix проверяют только начало или конец. Все они чувствительны к регистру, поэтому сначала приведите строку к нижнему регистру, если это имеет значение.
Сочетайте их с ! для быстрой проверки на «отсутствие»:
if !email.contains("@") {
print("not a valid email")
}Задание
ЛегкоПрочитайте одну строку входных данных. Проверьте её как простой email, выполнив все следующие условия:
- Она содержит ровно один символ
@(используйтеfilter+countдля символов) - Она не начинается и не заканчивается символом
@ - Она заканчивается на
.tech,.comили.org(без учета регистра)
Выведите valid, если все проверки пройдены, в противном случае выведите invalid. Сравнение проводите с версией входных данных в нижнем регистре.
Для входных данных alice@CODDY.TECH результатом будет valid.
Шпаргалка
Проверьте, содержит ли строка подстроку, или начинается/заканчивается ли она ею:
let email = "alice@coddy.tech"
email.contains("@") // true – в любом месте строки
email.hasPrefix("alice") // true – в начале
email.hasSuffix(".tech") // true – в концеВсе три метода чувствительны к регистру. При необходимости сначала используйте .lowercased():
email.lowercased().hasSuffix(".tech")Используйте ! для проверки отсутствия:
if !email.contains("@") { print("not a valid email") }Попробуйте сами
let line = readLine()!
// TODO: проверить наличие ровно одного '@', не по краям, суффикс в [.tech .com .org]
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Строки в деталях
Подсчет и индексыРегистр и удаление пробеловПоиск в строкахРазделение и объединениеЗамена подстрокИтоги — Проверка имени пользователя4Множества
Создание множествОбъединение и пересечениеРазность и симметрическая разностьПодмножество и надмножествоИтоги — Фильтр тегов7Проект — Трекер привычек
Обзор проектаОтметить выполнение10Проект — Движок викторины
Обзор проектаЗадаем вопросы2Диапазоны и шаги
Закрытые и полуоткрытыеШагМетоды диапазоновДиапазоны в SwitchИтоги: Сетка календаря