wenn dann muss esw 8 1 12 12 15 sein
Hier mal meine Lösung:
Code:
foreach (Char c in textBox1.Text.ToLower().ToCharArray())
textBox2.Text += 1 + (c - 'a');
Zur Erklärung:
Ich nehme den String als ein Feld (Array) von Charaktern und gehe jeden Char einzeln durch.
Damit ich nicht zwischen Groß- und Kleinschreibung unterscheiden muss, wandle ich alle Buchstaben in Kleinbuchstaben um (wird durch die ToLower()-Methode gemacht)
Nun zu dem inneren der foreach-Schleife:
Dazu muss man verstehen, wie ein Character im Speicher hinterlegt wird.
Im Prinzip hndelt es sich um einen 8-bit Integer Wert der den ASCII-Code des jeweiligen Zeichens beinhaltet.
Das bedeutet, ein "a" wird nicht als "a" gespeichert sondern als 97, da die 97 im ASCII-Code dem a entspricht.
Damit erreiche ich durch "(c-'a')", dass der ASCII-Code von a (97) von dem ASCII-Code des aktuellen Zeichens (a=97, b=98, .. z=122) abgezogen wird.
Warum ich noch 1 addiere sollte dann auch klar sein
Hier nochmal eine kleine Übersicht zur Funktionsweise:
Code:
H -> h -> ('h'-'a') -> (104-97) -> 7
a -> a -> ('a'-'a') -> (97-97) -> 0
l -> l -> ('l'-'a') -> (108-97) -> 11
l -> l -> ('l'-'a') -> (108-97) -> 11
o -> o -> ('o'-'a') -> (111-97) -> 14
Vielleicht fragst du dich, warum aus dem Char einfach so ein Integer wird, das liegt daran, weil das Ergebnis einer arithmetischen Operation auf ein Char immer einen Intger ergibt, da ja zum Berechnen die ASCII-Codes (Integer) verwendet werden.
Hoffe ich konnte dir damit weiterhelfen ^^