zu doof fuer string.Format ?



  • problem ist hauptsaechlich - wie kann ich fuehrende nullen einfuegen lassen ?
    die MSDN ist zwar sehr ausfuherlich geschrieben - hilft mir aber irgendwie nicht weiter

    Der sourcecode spricht fuer sich selber /= besonders der teil mit der TimeSpan - diesen brauch ich wirklich /=

    static void Main(string[] args)
    {
        int number1 = 5;
        // needed: "AA05AA"
        Console.WriteLine(string.Format("AA{0}AA", number1));     // AA5AA
        Console.WriteLine(string.Format("AA{0,0}AA", number1));   // AA5AA
        Console.WriteLine(string.Format("AA{0,2}AA", number1));   // AA 5AA
        Console.WriteLine(string.Format("AA{0,02}AA", number1));  // AA 5AA
        Console.WriteLine(string.Format("AA{0:D}AA", number1));   // AA5AA
        Console.WriteLine(string.Format("AA{0,2:D}AA", number1)); // AA 5AA 
        Console.WriteLine(string.Format("AA{0:DD}AA", number1));  // AADDAA
        // ????
        // MFC.Format("AA%02dAA", number1)                        // AA05AA
    
        float number2 = 5.5F;
        // needed: "AA05,50AA // , or . doesn't matter
        Console.WriteLine(string.Format("AA{0}AA", number2));     // AA5,5AA
        Console.WriteLine(string.Format("AA{0,0}AA", number2));   // AA5,5AA
        Console.WriteLine(string.Format("AA{0,2}AA", number2));   // AA5,5AA
        Console.WriteLine(string.Format("AA{0,02}AA", number2));  // AA5,5AA
        Console.WriteLine(string.Format("AA{0:F}AA", number1));   // AA5,00AA
        Console.WriteLine(string.Format("AA{0,2:F}AA", number1)); // AA5,00AA 
        Console.WriteLine(string.Format("AA{0:FF}AA", number1));  // AAFFAA
        // ????
        // MFC.Format("AA%02,2f", number2)                        // AA05.05AA
    
        DateTime time = new DateTime(2008, 7, 22, 7, 5, 3);
        // needed: "AA07:05:03AA
        Console.WriteLine(string.Format("AA{0:T}AA", time));      // AA07:05:03AA - OK
        Console.WriteLine(string.Format("AA{0:hh}:{0:mm}:{0:ss}AA", time)); // AA07:05:03AA - OK
    
        TimeSpan span = System.DateTime.Now - time;
        // needed: AA00:42:57AA
        Console.WriteLine(string.Format("AA{0:T}AA", span));      // AA00:42:57.2954368AA
        Console.WriteLine(string.Format("AA{0}:{1}:{2}AA", span.Hours, span.Minutes, span.Seconds)); // AA0:42:57AA
        Console.WriteLine(string.Format("AA{0,2}:{1,2}:{2,2}AA", span.Hours, span.Minutes, span.Seconds)); // AA 0:42:57AA
        Console.WriteLine(string.Format("AA{0:hh}:{0:mm}:{0:ss}AA", span)); // AA00:42:57.2954368:00:42:57.2954368:00:42:57.2954368AA
        // ??
        // MFC:Format("AA%02d:%0d2:%02dAA", span.Hours, span.Minutes, span.Seconds); // AA00:42:57AA
    }
    


  • Führende 0en hängen wohl ein wenig vom Datentyp bzw. FormatProvider ab. Bei einem "Hallo Welt" macht das IMHO z.B. keinen Sinn.

    string xret = string.Format("{0:000}", 12);
    

    Google: C# string format führende nullen



  • ah - verstehe

    also
    string.Format("AA{0:00}AA", number1);
    wird AA05AA ergeben - sehr schoen

    aber wie ist das mit der TimeSpan ?

    die sache ist die

    ich hab hier ein "Please Wait" mit infotext, progress, remaining und elapsed time
    diese zeit wird berechnet indem ich mit die zeit merk wann es gestartet wurde - und dann bei einem 1sec timer
    current - start berechne
    da erhalte ich eine timespan
    und egal wie ich es nu mach - es werden stets noch millisekunden angegeben
    und das hh mm ss ist noch merkwuerdiger - siehe beispiel oben

    kann ich dort nur mit
    string.Format("AA{0:00}:{1:00}:{2:00}AA", span.Hours, span.Minutes, span.Seconds)
    arbeiten - das scheint gut zu funzen

    // mit google stimmt - haette des auch bemuehen koennen - arbeite daheim am lappy komplett ohne internet - bins nicht mehr gewohnt nach fragen zu googlen #gg



  • TimeSpan hab ich ehrlich gesagt noch nie benutzt. Ein wenig gg bringt aber zu Tage, das es um den Typ ein wenig Verwirrung gibt. Wenn Du die Formatierung gar nicht so hin bekommst wie Du es brauchst, kannst Du auch nen eigenen FormatProvider schreiben.



  • jo, danke - mit dem einzelnen holen mittels 0:00 usw komm ich auf die richtige ausgabe
    danke

    find aber nichts verwirrend - komm damit super klar {o; - mir das mit dem hh mm ss ist ja grausig


Anmelden zum Antworten