如何在iOS Swift中获取数组中所有字符串的第一个字母?

时间:2015-11-19 00:10:06

标签: ios swift nsarray

我有一组存储在数组中的字符串。

stringArray = [Aruna, Bala, Chitra, Divya, Fatima]

我想获取所有字符串的第一个字母并将其存储在数组中。 喜欢:letterArray = [A, B, C, D, F]

注意:它们不在引号中#34; - "

2 个答案:

答案 0 :(得分:15)

不确定你的意思是'他们不在引号内',但如果他们实际上是字符串那么类似的东西:

var letterArray = [Character]()
for string in stringArray {
    letterArray.append(string.characters.first!)
}

修改

根据您的意愿将其设为String

var letterArray = [String]()
for string in stringArray {
    letterArray.append(String(string.characters.first!))
}

编辑2

Leo Dabus所示,如果传递空字符串,则上述操作将失败。如果你知道永远不会有一个空字符串,这不适用,但我已经更新了以上内容来处理这种情况:

var letterArray = [String]()
for string in stringArray {
    if let letter = string.characters.first {
        letterArray.append(String(letter))
    }
}

更新:SWIFT 4

来自Swift 4 characters已被弃用。您现在应该仅使用string.characters.first直接对字符串进行操作,而不是使用string.first。例如:

var letterArray = [String]()
for string in stringArray {
    if let letter = string.first {
        letterArray.append(String(letter))
    }
}

答案 1 :(得分:13)

Xcode 9•Swift 4

extension Collection where Element: StringProtocol {
    var initials: [Element.SubSequence] {
        return map { $0.prefix(1) }
    }
}

Xcode 8•Swift 3

extension Collection where Iterator.Element == String {
    var initials: [String] {
        return map{String($0.characters.prefix(1))}
    }
}

Xcode 7.3.1•Swift 2.2.1

extension CollectionType where Generator.Element == String {
    var initials: [String] {
        return map{ String($0.characters.prefix(1)) }
    }
}


let stringArray = ["Aruna", "Bala", "Chitra", "Divya", "Fatima"]

let initials = stringArray.initials  // ["A", "B", "C", "D", "F"]