Как получить первую букву всех строк в массиве в iOS Swift?
у меня есть группа строк, хранящихся в массиве.
stringArray = [Aruna, Bala, Chitra, Divya, Fatima]
Я хочу получить первые буквы всех строк и сохранить их в массиве.
Например:letterArray = [A, B, C, D, F]
Примечание: они не находятся в кавычках"--"
2 ответов
не уверен, что вы подразумеваете под 'они не в кавычках, но если они на самом деле являются строками, то что-то вроде этого:
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!))
}
EDIT 2
As Лев 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))
}
}
Xcode 9 * Swift 4
extension Collection where Element: StringProtocol {
var initials: [Element.SubSequence] {
return map { .prefix(1) }
}
}
Xcode 8 * Swift 3
extension Collection where Iterator.Element == String {
var initials: [String] {
return map{String(.characters.prefix(1))}
}
}
Xcode 7.3.1 * Swift 2.2.1
extension CollectionType where Generator.Element == String {
var initials: [String] {
return map{ String(.characters.prefix(1)) }
}
}
let stringArray = ["Aruna", "Bala", "Chitra", "Divya", "Fatima"]
let initials = stringArray.initials // ["A", "B", "C", "D", "F"]