如何将Int转换为Swift中的字符

我在这里挣扎并失败超过十分钟而且我放弃了。我需要将一个Int转换为Swift中的一个角色并且无法解决它。

如何在Swift中将Int整数 )转换(转换)为Characterchar )?

说明性问题/任务挑战

生成一个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转换为UnicodeScalarUnicodeScalarCharacter ,然后再返回:

 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,您将获得特殊字符。

Interesting Posts