我想生成一个给定字符串的单词列表,其中每个列出的单词至少包含一个大写字母。
有一个像这样的字符串:
let str: String = "Apple watchOS 3 USA release date and feature rumours."
我想得到一个这样的数组:
var list: [String] = ["Apple", "watchOS", "USA"]
这样做的最佳方式是什么?
答案 0 :(得分:11)
var list = str.componentsSeparatedByString(" ").filter{ $0.lowercaseString != $0 }
答案 1 :(得分:3)
你可以在Swift中使用String的内置函数来获取字符串的所有单词。它比单独用空格(“”)更好,因为你可以用一个点来表达一些单词(如下面的例子)
let str = "Apple watchOS 3 USA release date and feature Rumours."
var list = [String]()
str.enumerateSubstringsInRange(str.startIndex..<str.endIndex, options:.ByWords) {
(substring, substringRange, enclosingRange, value) in
//add to your array if lowercase != string original
if let _subString = substring where _subString.lowercaseString != _subString {
list.append(_subString)
}
}
答案 2 :(得分:0)
你可能会做这样的事情。我还没有测试过,只是快速写下来。
let str = "Apple watchOS 3 USA release date and feature rumours."
let strArr = str.componentsSeparatedByString(" ")
var upperWords: Array<String> = []
for word in strArr {
if word != word.lowercaseString {
upperWords.append(word)
}
}