Как получить первую букву всех строк в массиве в 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"]