使用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