在Swift中提取字符串中最后一个单词的方式是什么?因此,如果我有“ Lorem ipsum dolor坐在amet”,请返回“ amet”。最有效的方法是什么?
您可以使用String方法enumerateSubstringsInRange。第一个参数只是传递您的字符串Range<Index>和选项.byWords。只需将每个子字符串附加到结果集合中并返回即可。
Range<Index>
.byWords
Swift 5或更高版本 (对于较早的Swift语法,请检查编辑历史记录)
import Foundation extension StringProtocol { // for Swift 4 you need to add the constrain `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 = sentence.filter{ $0.isLetter || $0.isWhitespace }
查找字符串中最后一个空格的索引
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"" }