且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用Swift提取字符串中的最后一个单词

更新时间:2022-12-26 18:05:26

您可以使用String方法enumerateSubstringsInRange。第一个参数只传递你的String characters.indices和选项.ByWords。只需将每个子字符串附加到最终数组并返回它。

You can use String method enumerateSubstringsInRange. First parameter just pass your String characters.indices, and the option .ByWords. Just append each substring to the final array and return it.

Xcode 8.1•Swift 3.0.1或更高版本

extension String {
    var byWords: [String] {
        var byWords:[String] = []
        enumerateSubstrings(in: startIndex..<endIndex, options: .byWords) {
            guard let word = $0 else { return }
            print($1,$2,$3)
            byWords.append(word)
        }
        return byWords
    }
    func firstWords(_ max: Int) -> [String] {
        return Array(byWords.prefix(max))
    }
    var firstWord: String {
        return byWords.first ?? ""
    }
    func lastWords(_ max: Int) -> [String] {
        return Array(byWords.suffix(max))
    }
    var lastWord: String {
        return byWords.last ?? ""
    }
}






用法:


Usage:

let sentence = "Out of this world!!!"
let firstWord = sentence.firstWord       // "Out"
let lastWord = sentence.lastWord         // world"
let words = sentence.byWords             // ["Out", "of", "this", "world"]
let first2Words = sentence.firstWords(2) // ["Out", "of"]
let last2Words = sentence.lastWords(2)   // ["this", "world"]






Swift 2

extension String {
    var byWords: [String] {
        var result:[String] = []
        enumerateSubstringsInRange(characters.indices, options: .ByWords) {
            guard let substring = $0.substring else { return }
            result.append(substring)
        }
        return result
    }
}