/ / SWIFT 3 - Ganzzahl in Zeichen konvertieren - swift, swift3

SWIFT 3 - Integer in Zeichen umwandeln - swift, swift3

Ich versuche etwas zu bekommen, das so aussieht:

  1 2 3 4 5 6 7 8 9 10
A * * * * * * * * * *
B * * * * * * * * * *
....until J

Wie konvertiere ich den Wert der Zeile in ein Zeichen? Ich dachte auch daran, col für 64 zu verwenden, den ASCII-Wert auf 64 zu setzen oder für das Unicode-Zeichen auf 41. Es ist mir egal, auf welche Weise.

Weiß jemand, wie ich das machen könnte?

    for row in 0..<board.count
{
for col in 0..<board[row].count
{

if row == 0 && col != 0
{
board[row][col] = ROW AS CHARACTER
}
else if col == 0 && row != 0
{
board[row][col] = A - J
}
else if(col != 0 && row != 0)
{
board[row][col] = "*"
}
}
}

Antworten:

1 für die Antwort № 1

Sie können Int erweitern, um das gewünschte zugeordnete Zeichen wie folgt zurückzugeben:

extension Int {
var associatedCharacter: Character? {
guard 1...10 ~= self, let unicodeScalar = UnicodeScalar(64 + self) else { return nil }
return Character(unicodeScalar)
}
}



1.associatedCharacter    // A
2.associatedCharacter    // B
3.associatedCharacter    // C
10.associatedCharacter   // J
11.associatedCharacter   // nil

0 für die Antwort № 2

(Un) zum Glück versucht Swift sehr hartTrennen Sie das Konzept eines „Zeichens“, das, was Sie auf dem Bildschirm lesen, und die zugrunde liegende ASCII-Darstellung aus Gründen, die bei komplexen Texten sehr wichtig sind. (Welcher Buchstabe kommt nach "a"? Abhängig davon, welche Sprache Sie sprechen.)

Wahrscheinlich möchten Sie das erhöhen UnicodeScalar Wert, der für "normalen" Text der ASCII-Kodierung entspricht.

let first = UnicodeScalar("A").value
board[row][col] = String(Character(UnicodeScalar(first + UInt32(row))!))

Mit den zusätzlichen Schritten und dem optionalen Auspacken erinnert Swift Sie daran, was alles schief gehen kann, wenn Sie einen Buchstaben „erhöhen“