Format-String
Ein Format-String ist ein Template, mit dem Objekte sehr flexibel in einen String umgewandelt werden können.
Hierbei ist ein Format-String ein normaler String, welcher Platzhalter und Attribute enthält.
Ähnlich dazu sind Style-Strings, welche allerdings nur spezifisch für manche Typen verfügbar sind.
Platzhalter
Ein Platzhalter wird mit geschweiften Klammern definiert.
"{}"
In einem String können neben anderen Zeichen beliebig viele Platzhalter eingebaut werden.
"My dog {} runs {} through {}."
Mit der Funktion ".fill" lassen sich diese Platzhalter mit Werten füllen:
Print "My dog {} runs {} through {}.".fill( "Bruno", "happily", "the garden" )
Attribute
Zwischen den geschweiften Klammern können verschiedene Attribute übergeben werden. Hierbei wird einerseits die "Zelle" definiert, in die der String eingefügt werden soll. Zusätzlich ist es möglich, Typ-Spezifische Attribute zu übergeben.
Der Aufbau ist hierbei:
{ Zell-Attribute:Typ-Attribute }
Definition einer Zelle
Eine Zelle wird nach nachfolgendem Muster aufgebaut, wobei nur benötigte Formatierungen angegeben werden:
- Feld-Länge
- Überlauf (! = versteckt, ? = anzeigen)
- Ausrichtung (< = links, > = rechts, ^ = zentriert)
- Typ
Hier die Definition einer Zelle mit 15 Zeichen, wobei der Text zentriert wird:
"{15^}"
Zell-Typ
Folgende Typen stehen hier zur Verfügung:
| i | Int | Ganzzahl | Rechts |
| d | Dec | Dezimalzahl | Rechts |
| c | Char | Character | Links |
| s | Str | String | Links |
| b | Bool | Wahrheitswert | Links |
| t | Type | Typ | Links |
Wird kein Typ angegeben, so wird entweder der Objekt-Typ oder "s" für String verwendet.
Hier z.B. wird ein Objekt in eine Ganzzahl umgewandelt und innerhalb von 5 Zeichen rechtsbündig ausgerichtet:
"My Number is {5i}"
Bei nachfolgendem Beispiel wird der übergeben String wie folgt formatiert:
- Genau 5 Zeichen breit
- Links ausrichten
- Objekt in eine Ganzzahl umwandeln
Print "|{5!<i}|".fill("123.45")
Spezifische Attribute
Abhängig vom gewählten Typ, welcher explizit festgelegt werden muss, können noch Typ-Spezifische Attribute übergeben werden. Hierzu wird an die Zelldefinition ein Doppelpunkt angefügt und die entsprechenden Attribute angehängt.
Hier wird ein Objekt als getrimmter String und innerhalb von doppelten Anführungszeichen ausgegeben.
"{s:t2}"
String
| t | Trimme Leerzeichen, Tabulator und Zeilenumbrüche |
| u | Großbuchstaben |
| l | Kleinbuchstaben |
| c | Der erste Anfangsbuchstabe groß |
| C | Der Anfangsbuchstabe jeden Wortes groß |
| e | Backslash und das Sonderzeichen 0 (EOF) werden mit einem Backslash maskieren |
| E | Alle Sonderzeichen mit Backslash maskieren |
| r | Den Backslash vor Sonderzeichen entfernen |
| h | HTML-Special-Chars in HTML-Entity umwandeln |
| H | Alle möglichen Zeichen in HTML-Entity umwandeln |
| d | HTML-Entity's in reguläre Zeichen umwandeln |
| 1 | Mit einfachen Anführungszeichen umgeben, Anführungszeichen im String werden mit Backslash maskiert. |
| 2 | Mit doppelten Anführungszeichen umgeben, Anführungszeichen im String werden mit Backslash maskiert. |
| 3 | Mit einfachen Anführungszeichen umgeben, Anführungszeichen im String werden verdoppelt (z.B. für SQL) |
| 4 | Mit doppelten Anführungszeichen umgeben, Anführungszeichen im String werden verdoppelt (z.B. für SQL) |
Character
| u | Großbuchstaben |
| l | Kleinbuchstaben |
Integer
| + | bei positiven Zahlen wird ein '+' davor ausgegeben. |
Dezimal
| + | bei positiven Zahlen wird ein '+' davor ausgegeben. |
| 0 | Zahl auf Ganzzahl runden |
| 1 bis 9 | Anzahl der Dezimal-Stellen |
Bool
| u | Großbuchstaben |
| l | Kleinbuchstaben |
| c | Anfangsbuchstabe groß |