String "formatieren"

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von lycoor24.

    String "formatieren"

    Hallo,

    ich habe folgendes Problem:
    Mittes eines SqlDataReaders hole ich daten aus einer Tabelle und diese muss ich in eine .txt datei schrieben. Das klappt auch so weit. Es geht darum, dass ich den ausgegebenen String (ca. 10 Zeilen) formatieren möchte. Im Moment sieht mein Code so aus:

    VB.NET-Quellcode

    1. ...
    2. If reader.HasRows Then
    3. While reader.Read()
    4. attributes = attributes & reader.Item("attributname") & vbTab & reader.Item("anzahl") & vbNewLine
    5. End While
    6. End If
    7. ...


    das Ausgegebene dann so:

    Quellcode

    1. CODE 1
    2. DAUSSEN 1
    3. EBEZ 1
    4. EBFO 1
    5. ECLASS_4_1 1
    6. ECLASS_5_1 1
    7. ECLASS_6_1 1
    8. GEWICHT 1


    Allerdings sollte das "formatiert" sein. Aslo die Einzer alle in einer Reihe..


    Weiß jemand wie das geht?

    MFG
    Lycoor
    Versuch es doch einmal mit String.Format() und einfach 2x vbTab
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell

    lycoor24 schrieb:

    wie das geht?
    So was:

    VB.NET-Quellcode

    1. Dim txt = "b" & "x".PadLeft(20)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    richtig formatieren geht mit der Format-Funktion, zB:

    VB.NET-Quellcode

    1. Dim lines = New List(Of String)
    2. '...
    3. lines.Add(String.Format("{0,-10}{1,20}", reader("attributname"), reader("anzahl"))) ' 1.Spalte breite 10, linksbündig, 2.Spalte breite 20, rechtsbündig
    4. '...
    5. Dim attributes = String.Join(Environment.NewLine, lines) ' zuletzt alles zusammenbauen

    Die Format-Syntax - innerhalb der {} - ist wie folgt:
    zuerst der Index des zu formatierenden Arguments, dann durch , getrennt die Spalten-Definition (breite, bündigkeit), dann durch : getrennt weitere Format-Zeichen (hier nicht angegeben).
    Sowohl der , - Abschnitt, als auch der : - Abschnitt kann weggelassen werden - nicht aber die Reihenfolge vertauschen.

    Auch zu beachten, dass die weiteren Format-Zeichen (also abschnitt :) typ-abhängig sind, und können richtig kompliziert werden. Etwa bei Doubles, DateTime oder Timespan ist das eine richtige kleine "Geheimsprache".

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()