斯威夫特:生成(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))
}
如果你只是想要一组已知的数组:
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]
对,我知道我可以键入出来,但不知道如何将字符作为你的C/Obj-将映射C等谢谢 – 2014-10-01 23:59:07
好吧对不起,我只知道斯威夫特。 – 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))})
我喜欢单线程;但是我发现我需要解开UnicodeScalar()的输出,如下所示:let xs =(0 .. 2017-06-14 16:33:21
谢谢,正试图在文档中查找映射;不能。 PS。想尝试切线相关的奖金问题? http://stackoverflow.com/questions/26152604/swift-slice-startindex-always-0 ;-) – 2014-10-02 00:22:58
是的,它没有很好的记录;你基本上需要挖掘自动生成的头文件,看看你能做些什么;) – 2014-10-02 00:24:54