Оновлено для Swift 4
Перевірка того, з чого починається і закінчується String
Ви можете використовувати hasPrefix(_:)
і hasSuffix(_:)
методи, щоб перевірити рівність з іншою рядком.
let str = "Hello, playground"
if str.hasPrefix("Hello") { // true
print("Prefix exists")
}
if str.hasSuffix("ground") { // true
print("Suffix exists")
}
Отримання фактичних префіксів та суфіксів
Для того, щоб отримати власне підстроку префікса або суфікса, ви можете скористатися одним із наведених нижче способів. Я рекомендую перший метод для його простоти. Усі методи використовуються str
як
let str = "Hello, playground"
Спосіб 1: (Рекомендовано) prefix(Int)
таsuffix(Int)
let prefix = String(str.prefix(5)) // Hello
let suffix = String(str.suffix(6)) // ground
На мій погляд, це кращий метод. На відміну від методів 2 і 3, наведених нижче, цей спосіб не буде збій, якщо індекси вийдуть за межі. Він просто поверне всі символи в рядку.
let prefix = String(str.prefix(225)) // Hello, playground
let suffix = String(str.suffix(623)) // Hello, playground
Звичайно, іноді збої корисні, тому що вони повідомляють, що існує проблема з вашим кодом. Тож розглянемо також і другий метод нижче. Він видасть помилку, якщо індекс вийде за межі.
Метод 2: prefix(upto:)
іsuffix(from:)
Індекси Swift String є складними, оскільки вони повинні враховувати спеціальні символи (наприклад, емодзі). Однак, як тільки ви отримаєте індекс, легко отримати префікс або суфікс. (Див мій інший відповідь на String.Index
.)
let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str.prefix(upTo: prefixIndex)) // Hello
let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str.suffix(from: suffixIndex)) // ground
Якщо ви хочете вберегтися від виходу за межі, ви можете скласти індекс, використовуючи limitedBy
(знову дивіться цю відповідь ).
Спосіб 3: підписки
Оскільки String - це колекція, ви можете використовувати підписки, щоб отримати префікс і суфікс.
let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str[..<prefixIndex]) // Hello
let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str[suffixIndex...]) // ground
Подальше читання