如何获取iOSSwift数组中所有字符串的首字母?
How to get first letter of all strings in an array in iOS Swift?
我有一组字符串存储在一个数组中。
stringArray = [Aruna, Bala, Chitra, Divya, Fatima]
我想获取所有字符串的第一个字母并将其存储在一个数组中。
喜欢:letterArray = [A, B, C, D, F]
注意:它们不在引号内“--”
不确定 'they are not within quotes' 是什么意思,但如果它们实际上是字符串,则如下所示:
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.first
直接对字符串进行操作,而不是使用 string.characters.first
。例如:
var letterArray = [String]()
for string in stringArray {
if let letter = string.first {
letterArray.append(String(letter))
}
}
Xcode 9 • Swift 4
extension Collection where Element: StringProtocol {
var initials: [Element.SubSequence] {
return map { [=10=].prefix(1) }
}
}
Xcode 8 • Swift 3
extension Collection where Iterator.Element == String {
var initials: [String] {
return map{String([=11=].characters.prefix(1))}
}
}
Xcode 7.3.1 • Swift 2.2.1
extension CollectionType where Generator.Element == String {
var initials: [String] {
return map{ String([=12=].characters.prefix(1)) }
}
}
let stringArray = ["Aruna", "Bala", "Chitra", "Divya", "Fatima"]
let initials = stringArray.initials // ["A", "B", "C", "D", "F"]
也许你应该试试我的解决方案。
let stringArray = ["Aruna", "Bala", "Chitra", "Divya", "Fatima"]
let result = stringArray.map({ [=10=].prefix(1) }) // ["A", "B", "C", "D", "F"]
我有一组字符串存储在一个数组中。
stringArray = [Aruna, Bala, Chitra, Divya, Fatima]
我想获取所有字符串的第一个字母并将其存储在一个数组中。
喜欢:letterArray = [A, B, C, D, F]
注意:它们不在引号内“--”
不确定 'they are not within quotes' 是什么意思,但如果它们实际上是字符串,则如下所示:
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.first
直接对字符串进行操作,而不是使用 string.characters.first
。例如:
var letterArray = [String]()
for string in stringArray {
if let letter = string.first {
letterArray.append(String(letter))
}
}
Xcode 9 • Swift 4
extension Collection where Element: StringProtocol {
var initials: [Element.SubSequence] {
return map { [=10=].prefix(1) }
}
}
Xcode 8 • Swift 3
extension Collection where Iterator.Element == String {
var initials: [String] {
return map{String([=11=].characters.prefix(1))}
}
}
Xcode 7.3.1 • Swift 2.2.1
extension CollectionType where Generator.Element == String {
var initials: [String] {
return map{ String([=12=].characters.prefix(1)) }
}
}
let stringArray = ["Aruna", "Bala", "Chitra", "Divya", "Fatima"]
let initials = stringArray.initials // ["A", "B", "C", "D", "F"]
也许你应该试试我的解决方案。
let stringArray = ["Aruna", "Bala", "Chitra", "Divya", "Fatima"]
let result = stringArray.map({ [=10=].prefix(1) }) // ["A", "B", "C", "D", "F"]