Удалите все символы после определенного символа из строки в Swift

У меня есть textField, и я хотел бы удалить все символы после определенного символа.

Например, если у меня в textField есть слово Orange, и я хочу удалить все символы после n, я хотел бы получить Ora после удаления.

Как я могу удалить все символы после определенного символа из строки в Swift?

Спасибо

Ответ 1

Вы можете использовать rangeOfString и substringToIndex для его startIndex следующим образом:

Swift 2

let word = "orange"
if let index = word.rangeOfString("n")?.startIndex {
    print(word.substringToIndex(index))  // "ora"
}

Свифт 3

let word = "orange"
if let index = word.range(of: "n")?.lowerBound {
    print(word.substring(to: index))  // "ora"
}

Swift 4

let word = "orange"
if let index = word.range(of: "n")?.lowerBound {
    let substring = word[..<index]                 // "ora"
    // or  let substring = word.prefix(upTo: index) // "ora"
    // (see picture below) Using the prefix(upTo:) method is equivalent to using a partial half-open range as the collections subscript. 
    // The subscript notation is preferred over prefix(upTo:).

    let string = String(substring)
    print(string)  // "ora"
}

enter image description here

Ответ 2

Вы можете сделать это следующим образом:

guard let range = text.rangeOfString("Your String or Character here") else {
    return the text 
}

return text.substringToIndex(range.endIndex)
// depending on if you want to delete before a certain string, you would use range.startIndex