斯威夫特:生成(SWIFT)字符

问题描述:

简单的问题阵列 - 希望,我想生成字符的简单数组,事中的静脉:斯威夫特:生成(SWIFT)字符

// trying to do something like this (pseudo code): 
let letters:[Character] = map(0..<26) { i in 'a' + i } 

,并曾尝试以下无济于事

let a = Character("a") 
let z = Character("z") 
let r:Range<Character> = a..<z 
let letters:[Character] = map(a..<z) { i in i } 

我意识到Swift使用Unicode,做这种事情的正确方法是什么?

(注意,这不是一个关于与传统Obj-C字符交互的问题,严格在Swift中进行测试等)。

这是一个有点麻烦,以获得初始字符代码斯威夫特(即C /的OBJ-C 'a'),但你可以做到这一点像这样:

let aScalars = "a".unicodeScalars 
let aCode = aScalars[aScalars.startIndex].value 

let letters: [Character] = (0..<26).map { 
    i in Character(UnicodeScalar(aCode + i)) 
} 
+0

谢谢,正试图在文档中查找映射;不能。 PS。想尝试切线相关的奖金问题? http://stackoverflow.com/questions/26152604/swift-slice-startindex-always-0 ;-) – 2014-10-02 00:22:58

+0

是的,它没有很好的记录;你基本上需要挖掘自动生成的头文件,看看你能做些什么;) – 2014-10-02 00:24:54

如果你只是想要一组已知的数组:

let str = "abcdefghijklmnopqrstuvwxyz" 
let characterArray = Array(str) 
println(characterArray) 

//[a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z] 
+0

对,我知道我可以键入出来,但不知道如何将字符作为你的C/Obj-将映射C等谢谢 – 2014-10-01 23:59:07

+0

好吧对不起,我只知道斯威夫特。 – 2014-10-02 00:12:59

感谢您的有用答案。

我正在使用单线版本。

let xs = (97...122).map({Character(UnicodeScalar($0))}) 

let xs = (0..<26).map({Character(UnicodeScalar("a".unicodeScalars.first!.value + $0))}) 
+0

我喜欢单线程;但是我发现我需要解开UnicodeScalar()的输出,如下所示:let xs =(0 .. 2017-06-14 16:33:21

您可以简单地使用 let alphabets: [UnicodeScalar] = Array("A"..."Z")

+0

这不起作用。它在我的操场上显示错误 – adev 2017-07-06 22:49:24

+0

您可以使用范围'“A”...“Z”来创建从'A'到'Z'的范围,但是'Array()'不会返回这些字母的数组 – Grubas 2017-10-10 17:17:04