web-dev-qa-db-ja.com

iOS Swiftで配列内のすべての文字列の最初の文字を取得するにはどうすればよいですか?

文字列のグループが配列に格納されています。

stringArray = [Aruna, Bala, Chitra, Divya, Fatima]

すべての文字列の最初の文字を取得して、配列に格納したいのですが。お気に入り: letterArray = [A, B, C, D, F]

注:それらは引用符「-」内にありません

10
AAA

「引用符で囲まれていない」とはどういう意味かわかりませんが、実際には文字列の場合は次のようになります。

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

Leo Dabus が示唆するように、空の文字列を渡すと、上記は失敗します。空の文字列が存在しないことがわかっている場合、これは適用されませんが、このケースを処理するように上記を更新しました。

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

更新:Swift 4

From Swift 4 charactersは廃止されました。string.characters.firstを使用する代わりに、string.firstだけを使用して文字列を直接操作する必要があります。次に例を示します。

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

Xcode 9•Swift 4

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

Xcode 8•Swift

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"]
14
Leo Dabus