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

时间:2015-12-14 03:42:45

标签: ios swift int character var

我在这里挣扎并失败超过十分钟而且我放弃了。我需要将一个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! :)

8 个答案:

答案 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)

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

为了未来的访问者,我提供问题标题的基本答案,而不是问题本身的细节。

这是一个两步过程。将bits.scheme转换为Int,然后将UnicodeScalar转换为UnicodeScalar

Character

(source)

或者......

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?哈哈等等...

相关问题