Menu
Coddy logo textTech

Поиск в строках

Часть раздела Логика и управление потоком путешествия по Swift на Coddy — урок 3 из 56.

Три быстрых способа проверить, содержится ли подстрока внутри другой:

let email = "alice@coddy.tech"
print(email.contains("@"))         // true
print(email.hasPrefix("alice"))    // true
print(email.hasSuffix(".tech"))    // true

contains принимает любую подстроку, в то время как hasPrefix и hasSuffix проверяют только начало или конец. Все они чувствительны к регистру, поэтому сначала приведите строку к нижнему регистру, если это имеет значение.

Сочетайте их с ! для быстрой проверки на «отсутствие»:

if !email.contains("@") {
    print("not a valid email")
}
challenge icon

Задание

Легко

Прочитайте одну строку входных данных. Проверьте её как простой 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]
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком