web-dev-qa-db-ja.com

SwiftでIntを文字に変換する方法

私はここで10分以上苦労し失敗しましたが、私は屈します。SwiftでIntをCharacterに変換する必要があり、解決できません。

質問

どのように変換しますか(castIntintegerCharacterchar)to Swift?

例示的な問題/タスクチャレンジ

文字 'A'から 'Z'を出力するforループを生成します。このようなもの:

    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! :)
29
J-Dizzle

整数をCharacterインスタンスに直接変換することはできませんが、整数からUnicodeScalarCharacterに戻し、再び戻すことはできます。

let startingValue = Int(("A" as UnicodeScalar).value) // 65
for i in 0 ..< 26 {
    print(Character(UnicodeScalar(i + startingValue)))
}
28
Nate Cook

これまでのところ、私はこれを思いついた:

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)))
}
9
vacawama

これを試して

for i in 0...25
{
    let string = String(format: "%c", i+65) as String
    NSLog("%@", string)
}
8

SwiftでIntをキャラクターに変換する方法

将来の訪問者のために、質問自体の詳細ではなく、質問のタイトルに基本的な回答を提供しています。

これは2段階のプロセスです。 IntUnicodeScalarに変換してから、UnicodeScalarCharacterに変換します。

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

(source)

または、代わりに...

if let myUnicodeScalar = UnicodeScalar(97) 
    let myCharacter = Character(myUnicodeScalar)
}

こちらもご覧ください

8
Suragch

有用なコンテキストについては、バカワマとネイトクックのUnicodeScalarを使用してください-

 let startingValue = Int(UnicodeScalar("A").value)
 for i in 0..<26 {
    let itemStr = String(UnicodeScalar(i + startingValue))

    items.append("Item " + itemStr)
}
1
J-Dizzle

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より大きい場合、特殊文字を取得することに注意してください。

0
CedricSoubrie

新規および更新

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からのヘルプのthx、私はこのバージョンが好きです、特に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

ルックアップする必要はありません。ユニコードを知っている必要がありますか?ハハなど...

0
rezwits