Benutzer mit den meisten Antworten
string.toUpper() funktioniert nicht

Frage
-
Hallo Community,
folgender Code soll bewirken,dass die Usereingabe in Großbuchstaben umgewandelt wird,damit die Kondition erfüllt ist.Gibt der User sms ein,wird dieser String seltsamerweise nicht umgewandelt,die Schleife folglich nicht beendet.Gibt er hingegen direkt SMS ein,wird die Schleife verlassen.Warum formt modus.ToUpper(); den String nicht um?
do { wiederholen__ = false; Console.Write("Bitte geben Sie den Benachrichtigungsmodus ein:"); modus = Console.ReadLine(); modus.ToUpper();//formt den String nicht um--WARUM?? if (modus != "E-MAIL" && modus != "SMS") { Console.ForegroundColor = ConsoleColor.Red; Console.Write("\nBenachrichtigungsmodus: SMS oder E-Mail\n"); Console.ForegroundColor = ConsoleColor.White; wiederholen__ = true; } } while (wiederholen__);
- Bearbeitet tklustig Samstag, 29. April 2017 17:53
Antworten
-
Hallo,
damit das funktioniert musst Du das Ergebnis wieder zuweisen, siehe auch die Diskussion: string.Replace um ' aus einem string zu entfernen? also
modus = modus.ToUpper();
Wobei man das hier auch vermeiden kann (und sollte) in dem man ohne Berücksichtigung von Groß-/Klein vergleicht, via StringComparison:
string modus = String.Empty; while (true) // oder for(;;) je nach Geschmack { Console.Write("Bitte geben Sie den Benachrichtigungsmodus ein:"); modus = Console.ReadLine(); if (modus.Equals("E-MAIL", StringComparison.OrdinalIgnoreCase) || modus.Equals("SMS", StringComparison.OrdinalIgnoreCase)) break; Console.ForegroundColor = ConsoleColor.Red; Console.Write("\nBenachrichtigungsmodus: SMS oder E-Mail\n"); Console.ForegroundColor = ConsoleColor.White; }
So nebenbei gibt es eine Verwendung für break, was die Schleife ohne zusätzliche Variablen auskommen lässt.
Gruß Elmar
- Bearbeitet Elmar Boye Samstag, 29. April 2017 18:11
- Als Antwort markiert tklustig Samstag, 29. April 2017 18:41
Alle Antworten
-
Hallo,
damit das funktioniert musst Du das Ergebnis wieder zuweisen, siehe auch die Diskussion: string.Replace um ' aus einem string zu entfernen? also
modus = modus.ToUpper();
Wobei man das hier auch vermeiden kann (und sollte) in dem man ohne Berücksichtigung von Groß-/Klein vergleicht, via StringComparison:
string modus = String.Empty; while (true) // oder for(;;) je nach Geschmack { Console.Write("Bitte geben Sie den Benachrichtigungsmodus ein:"); modus = Console.ReadLine(); if (modus.Equals("E-MAIL", StringComparison.OrdinalIgnoreCase) || modus.Equals("SMS", StringComparison.OrdinalIgnoreCase)) break; Console.ForegroundColor = ConsoleColor.Red; Console.Write("\nBenachrichtigungsmodus: SMS oder E-Mail\n"); Console.ForegroundColor = ConsoleColor.White; }
So nebenbei gibt es eine Verwendung für break, was die Schleife ohne zusätzliche Variablen auskommen lässt.
Gruß Elmar
- Bearbeitet Elmar Boye Samstag, 29. April 2017 18:11
- Als Antwort markiert tklustig Samstag, 29. April 2017 18:41