如何将 Int 转换为 Swift 中的字符
How to convert an Int to a Character in Swift
我这里折腾了十多分钟,失败了,我认输了。Swift里面需要把Int转成Character,解决不了。
问题
如何将 (cast) Int
(integer) 转换为 Character
(char) 在 Swift?
说明性Problem/Task挑战
生成一个 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! :)
试试这个
for i in 0...25
{
let string = String(format: "%c", i+65) as String
NSLog("%@", string)
}
到目前为止我已经想到了这个:
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)))
}
您不能将整数直接转换为 Character
实例,但您可以从整数转换为 UnicodeScalar
再转换为 Character
并再次返回:
let startingValue = Int(("A" as UnicodeScalar).value) // 65
for i in 0 ..< 26 {
print(Character(UnicodeScalar(i + startingValue)))
}
为了获得有用的上下文,使用 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)
}
如何在 Swift
中将 Int 转换为字符
为了将来的访问者,我只提供问题标题的基本答案,而不是问题本身的详细信息。
这是一个两步过程。将 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)
}
另见
这里是对Int的扩展,提供对应的Letter函数:
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,您将获得特殊字符。
新增和更新
for charac in Unicode.Scalar("A").value...Unicode.Scalar("Z").value {
print(Unicode.Scalar(charac)!, terminator:" ")}
打印:
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
感谢@vacawama 的帮助,我喜欢这个版本,因为 Swift(5) 特别是因为:
for charac in Unicode.Scalar("a").value...Unicode.Scalar("z").value {
print(Unicode.Scalar(charac)!, terminator:" ")}
打印:
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
无需查找,即使我们应该知道我们的 unicode?哈哈等...
简单的把整数转成字符串,再把字符串转成字符
let number = 5
let numChar = Character(String(number))
我这里折腾了十多分钟,失败了,我认输了。Swift里面需要把Int转成Character,解决不了。
问题
如何将 (cast) Int
(integer) 转换为 Character
(char) 在 Swift?
说明性Problem/Task挑战
生成一个 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! :)
试试这个
for i in 0...25
{
let string = String(format: "%c", i+65) as String
NSLog("%@", string)
}
到目前为止我已经想到了这个:
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)))
}
您不能将整数直接转换为 Character
实例,但您可以从整数转换为 UnicodeScalar
再转换为 Character
并再次返回:
let startingValue = Int(("A" as UnicodeScalar).value) // 65
for i in 0 ..< 26 {
print(Character(UnicodeScalar(i + startingValue)))
}
为了获得有用的上下文,使用 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)
}
如何在 Swift
中将 Int 转换为字符为了将来的访问者,我只提供问题标题的基本答案,而不是问题本身的详细信息。
这是一个两步过程。将 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)
}
另见
这里是对Int的扩展,提供对应的Letter函数:
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,您将获得特殊字符。
新增和更新
for charac in Unicode.Scalar("A").value...Unicode.Scalar("Z").value {
print(Unicode.Scalar(charac)!, terminator:" ")}
打印:
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
感谢@vacawama 的帮助,我喜欢这个版本,因为 Swift(5) 特别是因为:
for charac in Unicode.Scalar("a").value...Unicode.Scalar("z").value {
print(Unicode.Scalar(charac)!, terminator:" ")}
打印:
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
无需查找,即使我们应该知道我们的 unicode?哈哈等...
简单的把整数转成字符串,再把字符串转成字符
let number = 5
let numChar = Character(String(number))