2015-12-14 46 views
22

Ho faticato e ho fallito per oltre dieci minuti qui e mi arrendo. Devo convertire un Int in un personaggio in Swift e non posso risolverlo.Come convertire un Int in un personaggio in Swift

Domanda

Come si fa a convertire (gettati) un Int (intero) ad un Character (char) a Swift?

illustrativa Problema/Compito sfida

Generare un ciclo che stampa le lettere 'A' attraverso 'Z', ad esempio qualcosa di simile:

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! :) 

risposta

19

Non puoi convertire un intero direttamente a un'istanza Character, ma si può andare da intero a UnicodeScalar-Character e viceversa:

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

provare questo

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

Finora mi è venuta in mente questo:

for i in 0 ..< 26 { 
    print(Character(UnicodeScalar(Int(UnicodeScalar("A").value) + i))) 
} 

Se stai solo cercando di generare "A" a " Z ", puoi evitare la matematica e fai semplicemente:

for c in UnicodeScalar("A").value...UnicodeScalar("Z").value { 
    print(String(UnicodeScalar(c))) 
} 
1

Per utili contesto, prendendo vacawama di e di Nate Cook UnicodeScalar da usare -

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

    items.append("Item " + itemStr) 
} 
+0

Ok bene ... hai ragione e lo odio. Fatto!Ecco lo stile C se qualcuno lo desidera - –

+0

per (var i: Int = 0; i <26; i ++) { var itemStr: String = String (UnicodeScalar (i + startingValue)); items.append (Stringa (formato: "Item '% @'", itemStr)); } –

+0

buona presa. Ho sostituito l'originale "items.append (String (format:" Item '% @' ", itemStr))" con la tua proposta di "items.append (" Item "+ itemStr) –

4

Come convertire un Int a un personaggio in Swift

Per motivi di futuri visitatori, sto fornendo una risposta di base al titolo della domanda piuttosto che i dettagli della domanda stessa.

Si tratta di un processo in due fasi. Convertire il Int in un UnicodeScalar e quindi convertire il UnicodeScalar in un 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 

(source)

Oppure, in alternativa ...

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

Vedi anche

Problemi correlati