2016-07-06 4 views
1

Ich kenne ToUpper und ToLower aus Strings Paket, aber offensichtlich werden sie hier nicht helfen. Gibt es eine eingebaute Funktion oder muss ich selbst eine schreiben?Wie reverse ich einen Fall von jedem Buchstaben in einer Zeichenfolge?

+2

Ziemlich sicher, dass du musst schreiben selbst eine Beurteilung. Es ist ziemlich einfach Grundidee wäre; Holen Sie den ASCII-Wert, wenn es in Großbuchstaben subtrahiert 26, wenn es Kleinbuchstaben ist, fügen Sie das gleiche hinzu. – evanmcdonnal

+1

es sei denn, Sie haben nicht-ASCII-Zeichen. was du erwarten solltest, damit umgehen zu können: "Привіт, Світ!" wird nicht so funktionieren – JimB

Antwort

9

Sie müssen selbst eine Beurteilung schreiben, aber die Bausteine ​​sind bereits in der Standardbibliothek:

func swapCase(s string) string { 
    return strings.Map(func(r rune) rune { 
     switch { 
     case unicode.IsLower(r): 
      return unicode.ToUpper(r) 
     case unicode.IsUpper(r): 
      return unicode.ToLower(r) 
     } 
     return r 
    }, s) 
} 
+0

Verdammt @JimB, du holst mich auf, hör auf! – OneOfOne

+0

Schöne, elegante Lösung. – icza

+0

Das sieht wirklich edel und elegant aus! Vielen Dank. Das wird mich einige Zeit brauchen, um mich einzuwickeln. – Arthmost

Verwandte Themen