Извлечь последнее слово в строке с помощью Swift

Как извлечь последнее слово из строки в Swift? Поэтому, если у меня есть «Lorem ipsum dolor sit amet», верните «amet». Каков наиболее эффективный способ сделать это?

Ответы на вопрос(1)

Решение Вопроса

параметр - просто передать ваш String characters.indices и опцию .ByWords. Просто добавьте каждую подстроку в окончательный массив и верните ее.

Swift 4 или позже (для старого синтаксиса Swift проверьте историю редактирования)

import Foundation

extension StringProtocol where Index == String.Index {
    var byWords: [SubSequence] {
        var byWords: [SubSequence] = []
        enumerateSubstrings(in: startIndex..., options: .byWords) { _, range, _, _ in
            byWords.append(self[range])
        }
        return byWords
    }
}

Использование:

let sentence = "Out of this world!!!"
let words = sentence.byWords             // ["Out", "of", "this", "world"]
let firstWord = words.first      // "Out"
let lastWord = words.last         // world"
let first2Words = words.prefix(2) // ["Out", "of"]
let last2Words = words.suffix(2)   // ["this", "world"]

Без импортного основания

чистка знаков препинания

let clean = String(sentence.unicodeScalars.filter(CharacterSet.punctuationCharacters.inverted.contains))

найти индекс последнего пробела в строке

if let index = clean.lastIndex(of: " ") {
    let lastWord = clean[index...]
    print(lastWord)   // "world"
}

найти индекс первого пробела в строке

if let index = clean.firstIndex(of: " ") {
    let firstWord = clean[...index]
    print(firstWord)  // "Out""
}
 senty31 мая 2016 г., 17:59
Огромное спасибо !! Я думаю, что ответ должен быть принят.
 Duncan C02 янв. 2019 г., 23:47
Хорошо, хотя я не решился бы иметь расширение, которое продвигает вычисляемое свойство по крайней мереO(n) спектакль. Я был бы более склонен сделать это функцией, так как это дает понять, что она выполняет работу каждый раз, когда вы вызываете ее.
 Leo Dabus02 янв. 2019 г., 23:17
@guru Я не знаю, что ты имеешь в виду под этим не работает. Он обнаруживает слова с префиксом @, но возвращает их без префикса.
 Leo Dabus02 янв. 2019 г., 23:59
@DuncanC Спасибо, но я уже здесьstackoverflow.com/a/39667966/2303865 Вы можете удалить вычисленные свойства и использовать только методcomponents(separated: .byWords)
 guru08 дек. 2018 г., 14:25
выглядит хорошо, но не работает со специальным символом, таким как "@"

Ваш ответ на вопрос