我有一个字符串数组。我想遍历数组并从每个字符串中获取第一个字母并将其添加到另一个数组中,但前提是该字母尚未添加。我在谷歌上找到的所有答案都非常先进,我正在寻找一个简单的功能。
答案 0 :(得分:3)
我在这里假设小写和大写计数相等,所以我按顺序收集字符串的大写版本。我的字符串数组称为words
,我的结果数组称为arr
:
var arr = [String]()
var previous = ""
for aWord in words {
let c = String(aWord.characters.prefix(1)).uppercaseString
if c != previous {
previous = c
arr.append(c)
}
}
答案 1 :(得分:1)
单行,假设[String]
位于array
let set = Set(array.map({String($0.characters.first!).uppercaseString}).sort())
或
let result = Array(Set(array.map({String($0.characters.first!).uppercaseString}))).sort()
答案 2 :(得分:0)
这里也是检查重复项的替代方法。
var strings: [String] = ["apple", "acorn", "tomato", "grass", "potato", "pear"]
var results: [String] = []
for string in strings {
guard let letter = string.lowercaseString.characters.first else { break }
let exists = results.filter { $0.lowercaseString.characters.first == letter }.first != nil
if !exists {
results.append(String(letter))
}
}