none
Frage zur formatierten Darstellen eines Integer-Wert RRS feed

  • Frage

  • Hallo

    Ich hätte eine Frage zur Formatierung eines Integer-Wertes, bei dem ich immer nach den ersten 4 Stellen einen " / " (Leerzeichen + Schrägstrich + Leerzeichen) einbauen möchte.

    Grundsätzlich mit der Funktion oder Methode

    Console.WriteLine(value.ToString("### / ######"));

    ABER - jetzt hängt es davon ab, wie lange die eingegebene Nummer ist. Im konkreten Fall handelt es sich um eine fortlaufende Nummer, die mit der Jahreszahl beginnt - Beispiel 20140001 - soll werden 2014 / 0001. Jetzt kann aber ein Benutzer auch 201401 eingeben, oder 201400001....und dann scheitert meine ToString()-Formatierung.

    Gibt es dafür einen Trick, wie ich die ToString-Parameter hier angeben muss? (oder muss ich den Integer-Wert auf String konvertieren, und die Stellen mit Split() usw. aus dem String herausfiltern, um alles richtig dar zu stellen).

    Vielleicht kann mir hier bitte jemand weiterhelfen.

    Besten Dank schon mal & schönen Gruß

    Michael


    Michael Erlinger

    Freitag, 7. Februar 2014 06:28

Antworten

  • Hallo Michael,

    beim Formatieren von Zahlen wird bei den Vorkommastellen immer von rechts nach links - oder von der kleinsten zur größten Ziffer - gearbeitet.

    Somit geht das von Dir Gewünschte nicht ohne Nachhilfe. Hier könnte eine kleine Erweiterungsmethode helfen:

        public static class FormatExtensions
        {
            public static string FormatZahlMitJahr(this int value, System.Globalization.CultureInfo cultureInfo = null)
            {
                string result = value.ToString("#", cultureInfo);
                if (value > 0 && result.Length > 4)
                    return result.Substring(0, 4) + "/" + result.Substring(4);
                return result;
            }
        }
        // Test...
        foreach (int value in new[] { 0, 2, 20, 201, 2014, 201401, 2014321, 20140001, 2014654321, -201401 })
            Console.WriteLine("{0} => '{1}'", value, value.FormatZahlMitJahr());
    
    Gruß Elmar
    • Als Antwort markiert M.Erlinger Freitag, 7. Februar 2014 10:55
    Freitag, 7. Februar 2014 10:31
    Beantworter

Alle Antworten

  • Hallo Michael,

    beim Formatieren von Zahlen wird bei den Vorkommastellen immer von rechts nach links - oder von der kleinsten zur größten Ziffer - gearbeitet.

    Somit geht das von Dir Gewünschte nicht ohne Nachhilfe. Hier könnte eine kleine Erweiterungsmethode helfen:

        public static class FormatExtensions
        {
            public static string FormatZahlMitJahr(this int value, System.Globalization.CultureInfo cultureInfo = null)
            {
                string result = value.ToString("#", cultureInfo);
                if (value > 0 && result.Length > 4)
                    return result.Substring(0, 4) + "/" + result.Substring(4);
                return result;
            }
        }
        // Test...
        foreach (int value in new[] { 0, 2, 20, 201, 2014, 201401, 2014321, 20140001, 2014654321, -201401 })
            Console.WriteLine("{0} => '{1}'", value, value.FormatZahlMitJahr());
    
    Gruß Elmar
    • Als Antwort markiert M.Erlinger Freitag, 7. Februar 2014 10:55
    Freitag, 7. Februar 2014 10:31
    Beantworter
  • Hallo Elmar

    danke für die rasche Rückmeldung und dem Code-Beispiel!!

    Hat mir weitergeholfen.

    Michael


    Michael Erlinger

    Freitag, 7. Februar 2014 10:55