Saltar al contenido

¿Cómo obtener la primera letra de todas las cadenas en una matriz en iOS Swift?

Solución:

No estoy seguro de lo que quiere decir con ‘no están entre comillas’, pero si en realidad son cadenas, entonces algo como esto:

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

EDITAR

Para tenerlo como String en lugar de lo que desee:

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

EDITAR 2

Como sugiere Leo Dabus, si pasa una cadena vacía, lo anterior fallará. Si sabe que nunca habrá una cadena vacía, esto no se aplica, pero he actualizado lo anterior para manejar este caso:

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

ACTUALIZACIÓN: SWIFT 4

De Swift 4 characters ha quedado obsoleto. En lugar de usar string.characters.first ahora debería operar en la Cadena directamente usando solo string.first. Por ejemplo:

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 { $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"]
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *