Benutzer mit den meisten Antworten
Frage zur formatierten Darstellen eines Integer-Wert

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
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
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