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

在Swift中提取String中的最后一个单词的方法是什么? 因此,如果我有“Lorem ipsum dolor sit amet”,请返回“amet”。 这样做最有效的方法是什么?

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

Xcode 8.1•Swift 3.0.1或更高版本

extension String { var byWords: [String] { var byWords:[String] = [] enumerateSubstrings(in: startIndex.. [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 ?? "" } } 

用法:

 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"] 

斯威夫特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 } } 

如果您想要包含Foundation类,其他答案都可以。 如果您想使用仅限Swift的类,那么您可以这样做:

斯威夫特4:

 let str = "Lorem ipsum dolor sit amet" let split = str.split(separator: " ") let last = String(split.suffix(1).joined(separator: [" "])) let lastTwo = String(split.suffix(2).joined(separator: [" "])) print(last) // -> "amet" print(lastTwo) // -> "sit amet” 

斯威夫特3:

 let str = "Lorem ipsum dolor sit amet" let split = str.characters.split(separator: " ") let last = String(split.suffix(1).joined(separator: [" "])) let lastTwo = String(split.suffix(2).joined(separator: [" "])) print(last) // -> "amet" print(lastTwo) // -> "sit amet” 

斯威夫特2:

 let str = "Lorem ipsum dolor sit amet" let split = str.characters.split(Character(" ")) let last = String(split.suffix(1).joinWithSeparator([" "])) let lastTwo = String(split.suffix(2).joinWithSeparator([" "])) print(last) // -> "amet" print(lastTwo) // -> "sit amet" 

我还会考虑使用componentsSeparatedByCharactersInSet ,并使用空格字符集:

 let string = "Lorem ipsum dolor sit amet" let stringArray = string.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) print(stringArray.last) 

首先使用componentsSeparatedByString按空格将字符串拆分为数组,然后使用.last获取数组的最后一个字。

 var string = "Lorem ipsum dolor sit amet" var stringArr = string.componentsSeparatedByString(" ") var lastWord = stringArr.last //amet