2015-11-19 34 views

回答

15

不知道你的「他們不是內引號」的意思,但如果他們實際上是字符串,然後是這樣的:

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)) 
    } 
} 
+0

我希望將'letterAray'作爲'[String]'而不是'[Character]'是否有可能? – AAA

+0

但他們不是字符串,他們只是字符。你有什麼使用案例,一個字符與一個字母在其中的字符串有什麼關係? – pbush25

+0

將其更新爲以字符串形式存儲。 – myles

11

的Xcode 8的Beta 3•斯威夫特3

extension Collection where Iterator.Element == String { 
    var initials: [String] { 
     return map{String($0.characters.prefix(1))} 
    } 
} 

的Xcode 7.3.1•斯威夫特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"] 
+0

很好的答案,我們可以製作一系列獨特的縮寫,即在擴展中不重複嗎? –

+0

@ChanchalRaj stackoverflow.com/a/39324354/2303865只需將.orderedSet添加到'stringArray.initials.orderedSet' –

相關問題