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

AAA*_*AAA 10 nsarray ios swift

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

stringArray = [Aruna, Bala, Chitra, Divya, Fatima]
Run Code Online (Sandbox Code Playgroud)

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

注意:它们不在引号" - "内

myl*_*les 15

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

var letterArray = [Character]()
for string in stringArray {
    letterArray.append(string.characters.first!)
}
Run Code Online (Sandbox Code Playgroud)

编辑

根据需要String改为:

var letterArray = [String]()
for string in stringArray {
    letterArray.append(String(string.characters.first!))
}
Run Code Online (Sandbox Code Playgroud)

编辑2

正如Leo Dabus建议的那样,如果你传递一个空字符串,上面的代码就会失败.如果你知道永远不会有一个空字符串,这不适用,但我更新了上面的处理这种情况:

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

更新:SWIFT 4

来自Swift 4 characters已被弃用.string.characters.first现在应该使用just来直接操作String,而不是使用你string.first.例如:

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


Leo*_*bus 14

Xcode 9•Swift 4

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

Xcode 8•Swift 3

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

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"]
Run Code Online (Sandbox Code Playgroud)