如何将Int转换为Swift中的字符
我在这里挣扎并失败超过十分钟而且我放弃了。我需要将一个Int转换为Swift中的一个角色并且无法解决它。
题
如何在Swift中将Int
( 整数 )转换(转换)为Character
( char )?
说明性问题/任务挑战
生成一个for循环,打印字母’A’到’Z’,例如:
for(var i:Int=0;i<26;i++) { //Important to note - I know print(Character('A' + i)); //this is horrendous syntax... } //just trying to illustrate! :)
您不能将整数直接转换为Character
实例,但您可以从integer转换为UnicodeScalar
再UnicodeScalar
为Character
,然后再返回:
let startingValue = Int(("A" as UnicodeScalar).value) // 65 for i in 0 ..< 26 { print(Character(UnicodeScalar(i + startingValue))) }
到目前为止,我已经想出了这个:
for i in 0 ..< 26 { print(Character(UnicodeScalar(Int(UnicodeScalar("A").value) + i))) }
如果您只是尝试将“A”生成为“Z”,则可以避免数学运算,只需执行以下操作:
for c in UnicodeScalar("A").value...UnicodeScalar("Z").value { print(String(UnicodeScalar(c))) }
尝试这个
for i in 0...25 { let string = String(format: "%c", i+65) as String NSLog("%@", string) }
如何将Int转换为Swift中的字符
为了未来的访问者,我提供问题标题的基本答案,而不是问题本身的细节。
这是一个两步的过程。 将Int
转换为UnicodeScalar
,然后将UnicodeScalar
转换为Character
。
let myInteger: Int = 97 // convert Int to a valid UnicodeScalar guard let myUnicodeScalar = UnicodeScalar(myInteger) else { return } // convert UnicodeScalar to Character let myCharacter = Character(myUnicodeScalar) // results print(myCharacter) // a
(资源)
或者……
if let myUnicodeScalar = UnicodeScalar(97) let myCharacter = Character(myUnicodeScalar) }
也可以看看
- 如何使用Unicodehex值(UTF-16)在Swift中表达字符串
- 在Swift中使用Unicode代码点
有用的背景,使用vacawama和Nate Cook的UnicodeScalar来使用 –
let startingValue = Int(UnicodeScalar("A").value) for i in 0..<26 { let itemStr = String(UnicodeScalar(i + startingValue)) items.append("Item " + itemStr) }
这是Int的扩展,以提供相应的字符函数:
extension Int { func correspondingLetter(inUppercase uppercase: Bool = false) -> String? { let firstLetter = uppercase ? "A" : "a" let startingValue = Int(UnicodeScalar(firstLetter)!.value) if let scalar = UnicodeScalar(self + startingValue) { return String(scalar) } return nil } }
请注意,如果int大于26,您将获得特殊字符。