none
string.toUpper() funktioniert nicht RRS feed

  • 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
    Samstag, 29. April 2017 17:48

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
    Samstag, 29. April 2017 18:11

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
    Samstag, 29. April 2017 18:11
  • Habe die erste Variante gewählt. Zu dumm von mir, den String wie ein Objekt zu codieren;

    obwohl:Ist nicht alles in C# irgendwie ein Objekt,sogar die Datentypen?

    Wieder ma':Vielen Dank!


    • Bearbeitet tklustig Samstag, 29. April 2017 18:41
    Samstag, 29. April 2017 18:41