我在这里挣扎并失败超过十分钟而且我放弃了。我需要将一个Int转换为Swift中的一个角色并且无法解决它。
问题
如何将{{em>强制)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! :)
答案 0 :(得分:27)
您无法将整数直接转换为Character
实例,但您可以从整数到UnicodeScalar
再到Character
然后再返回:
let startingValue = Int(("A" as UnicodeScalar).value) // 65
for i in 0 ..< 26 {
print(Character(UnicodeScalar(i + startingValue)))
}
答案 1 :(得分:9)
到目前为止,我已经想出了这个:
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)))
}
答案 2 :(得分:8)
试试这个
for i in 0...25
{
let string = String(format: "%c", i+65) as String
NSLog("%@", string)
}
答案 3 :(得分:8)
为了未来的访问者,我提供问题标题的基本答案,而不是问题本身的细节。
这是一个两步过程。将bits.scheme
转换为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
答案 4 :(得分:2)
只需将整数转换为String,然后将字符串转换为Character
let number = 5
let numChar = Character(String(number))
答案 5 :(得分:1)
有用的背景,请使用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)
}
答案 6 :(得分:0)
这是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,您将获得特殊字符。
答案 7 :(得分:0)
新的和更新的
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
thx是@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?哈哈等等...