Format() [v1.1.17+]

Formatiert eine beliebige Anzahl von Eingabewerten auf Basis einer Formatzeichenkette.

Zkette := Format(FormatZkette , Werte...)

Parameter

FormatZkette

Eine Formatzeichenkette, bestehend aus direkt geschriebenem Text und Platzhalter, im Format {Index:Format}.

Index ist ein Integer, der angibt, welcher Eingabewert verwendet werden soll. 1 ist der erste Wert, 2 der zweite und so weiter.

Format ist eine optionale Formatspezifikation, wie unten beschrieben.

Lassen Sie die Indexnummer weg, um den nächsten Eingabewert in der Sequenz zu verwenden (selbst wenn die Indexnummer bereits zuvor in der Zeichenkette benutzt wurde). "{2:i} {:i}" beispielsweise wandelt den zweiten und dritten Eingabewert in dezimale Integer um und fügt dazwischen ein Leerzeichen ein. Lässt man Index weg, muss Format weiterhin mit : beginnen. Geben Sie leere geschweifte Klammern an, um den nächsten Eingabewert mit Standardformatierung zu verwenden: {}

Mit {{} und {}} können direkt geschriebene geschweifte Klammern in die Zeichenkette eingefügt werden. Alle anderen ungültigen Platzhalter werden unverändert in das Ergebnis eingefügt.

Leerraumzeichen innerhalb der geschweiften Klammern sind nicht erlaubt (nur als Flag).

Werte

Eingabewerte, die formatiert und in die finale Zeichenkette eingefügt werden sollen. Jeder Wert ist ein einzelner Parameter. Der erste Wert hat eine Indexnummer von 1.

Mit einem variadischen Funktionsaufruf kann ein Array von Werten übergeben werden:

arr := [13, 240]
MsgBox % Format("{2:x}{1:02x}", arr*)

Formatspezifikationen

Jede Formatspezifikation kann die folgenden Komponenten enthalten (in genau dieser Reihenfolge, ohne Leerzeichen):

Flags Breite .Genauigkeit ULT Typ

Flags: Null oder mehrere Flags aus der Flag-Tabelle unten, um Präfix und Ausrichtung der Ausgabe zu beeinflussen.

Breite: Ein dezimaler Integer, der die Mindestbreite des formatierten Wertes bestimmt (in Zeichen). Standardmäßig werden Werte rechtsbündig gemacht und Leerzeichen zum Auffüllen verwendet. Diese Standardeinstellung kann mit den Flags - (linksbündig) und 0 (Null-Präfix) überschrieben werden.

.Genauigkeit: Ein dezimaler Integer, der je nach Ausgabetyp die maximale Anzahl von Zeichen, Dezimalstellen oder signifikante Stellen bestimmt. Es muss ein Dezimalpunkt davor sein. Die Angabe einer Genauigkeit kann eventuell dazu führen, dass der Wert gekürzt oder gerundet wird. die folgende Auflistung zeigt, welche Auswirkungen der Genauigkeitswert auf bestimmte Ausgabetypen hat (eine Erklärung zu jedem Ausgabetyp finden Sie in der unteren Tabelle):

ULT [v1.1.20+]: Ändert die Groß-/Kleinschreibung eines Zeichenkettenwertes -- Upper (groß), Lower (klein) oder Title (Anfangsbuchstabe groß). Nur in Verbindung mit s gültig. Zum Beispiel {:U} oder {:.20Ts}. Die Kleinbuchstaben l und t werden ebenfalls unterstützt, aber u ist für vorzeichenlose Integer reserviert.

Typ: Ein Zeichen aus der Typentabelle unten, das kennzeichnet, wie der Eingabewert interpretiert werden soll. Lässt man diese Komponente weg, wird standardmäßig s verwendet.

Flags

FlagBedeutung
-

Macht das Ergebnis innerhalb der angegebenen Feldbreite linksbündig (und füllt die rechte Seite mit Leerzeichen, falls nötig). Format("{:-10}", 1) beispielsweise gibt 1 zurück.

Lässt man dieses Flag weg, wird das Ergebnis innerhalb der vorgegebenen Feldbreite rechtsbündig gemacht.

+

Setzt ein Vorzeichen (+ oder -) vor einem vorzeichenfähigen Ausgabewert. Format("{:+d}", 1) beispielsweise gibt +1 zurück.

Lässt man dieses Flag weg, erscheint das Vorzeichen nur bei negativen vorzeichenfähigen Werten (-).

0

Wenn Breite mit einer 0 beginnt, werden solange Nullen auf der linken Seite hinzugefügt, bis die Mindestbreite erreicht wurde. Format("{:010}", 1) beispielsweise gibt 0000000001 zurück. Wenn man sowohl 0 als auch - angegeben hat, wird die 0 ignoriert. Wenn 0 als Integer-Format (i, u, x, X, o, d) spezifiziert ist und eine Genauigkeit angegeben ist - zum Beispiel {:04.d} - wird die 0 ignoriert.

Lässt man dieses Flag weg, wird der Wert nicht mit Nullen gefüllt.

 

Verwenden Sie ein Leerzeichen, um dem Ausgabewert ein einzelnes Leerzeichen voranzustellen, wenn dieser vorzeichenfähig und positiv ist. Das Leerzeichen wird ignoriert, wenn man sowohl den  - als auch +-Flag angegeben hat. Format("{: 05d}", 1) beispielsweise gibt 0001 zurück.

Lässt man dieses Flag weg, erscheint kein Leerzeichen.

#

Wenn man dieses Flag in Verbindung mit dem o-, x-, oder X-Format nutzt, beginnt ein Ausgabewert ungleich Null mit 0, 0x bzw. 0X. Format("{:#x}", 1) beispielsweise gibt 0x1 zurück.

Wenn man dieses Flag in Verbindung mit dem e-, E-, f-, a- oder A-Format nutzt, wird der Ausgabewert immer mit einem Dezimalpunkt angezeigt. Format("{:#.0f}", 1) beispielsweise gibt 1. zurück.

Wenn man dieses Flag in Verbindung mit dem g- oder G-Format nutzt, wird zum einen bewirkt, dass der Ausgabewert immer einen Dezimalpunkt enthält, und zum anderen verhindert, dass Nullen am Ende entfernt werden.

Wenn man dieses Flag in Verbindung mit dem c-, d-, i-, u-, oder s-Format nutzt, wird es ignoriert.

Typen

TypzeichenArgumentAusgabeformat
d oder i Integer Vorzeichenfähiger dezimaler Integer. Format("{:d}", 1.23) beispielsweise gibt 1 zurück.
u Integer Vorzeichenloser dezimaler Integer.
x oder X Integer Vorzeichenloser hexadezimaler Integer; ein kleines x bewirkt, dass die Hexadezimalzeichen kleingeschrieben werden. Das 0x-Präfix ist nur enthalten, wenn das #-Flag vorhanden ist, wie zum Beispiel {:#x}. Mit 0x{:x} oder Ähnlichem kann die hexadezimale Formatierung an die von SetFormat angepasst werden. Format("{:X}", 255) beispielsweise gibt FF zurück.
o Integer Vorzeichenloser oktaler Integer. Format("{:o}", 255) beispielsweise gibt 377 zurück.
f Floating-Point Vorzeichenfähiger Wert im Format [ - ]dddd.dddd. Hierbei repräsentiert dddd eine oder mehrere Dezimalstellen. Die Anzahl der Stellen vor dem Dezimalpunkt ist abhängig von der Größe der Zahl, während die Anzahl der Stellen nach dem Dezimalpunkt abhängig von der gewünschten Genauigkeit ist. Format("{:.2f}", 1) beispielsweise gibt 1.00 zurück.
e Floating-Point Vorzeichenfähiger Wert im Format [ - ]d.dddd e [Vorzeichen]dd[d]. Hierbei repräsentiert d eine Dezimalstelle, dddd eine oder mehrere Dezimalstellen, dd[d] zwei oder drei Dezimalstellen auf Basis des Ausgabeformats und der Größe des Exponenten, und Vorzeichen + oder -. Format("{:e}", 255) beispielsweise gibt 2.550000e+002 zurück.
E Floating-Point Identisch zum e-Format, außer dass der Exponent mit E statt e beginnt.
g Floating-Point Vorzeichenfähige Werte werden im f- oder e-Format angezeigt, abhängig davon, welches Format den Wert und die Genauigkeit kompakter darstellen kann. Das e-Format wird nur verwendet, wenn der Exponent des Wertes kleiner als -4 oder größer gleich Genauigkeit ist. Nullen am Ende werden entfernt; der Dezimalpunkt ist nur enthalten, wenn Dezimalstellen vorhanden sind.
G Floating-Point Identisch zum g-Format, außer dass der Exponent (sofern notwendig) mit E statt e beginnt.
a Floating-Point Vorzeichenfähiger hexadezimaler Floating-Point-Wert mit doppelter Genauigkeit im Format [?]0xh.hhhh p±dd. Hierbei repräsentiert h.hhhh die Hexadezimalstellen (kleingeschrieben) der Mantisse und dd eine oder mehrere Stellen des Exponenten. Die Genauigkeit bestimmt die Anzahl der Stellen nach dem Punkt. Format("{:a}", 255) beispielsweise gibt 0x1.fe0000p+7 zurück.
A Floating-Point Identisch zum a-Format, außer dass der Exponent mit P statt p beginnt.
p Integer Zeigt das Argument als Speicheradresse in hexadezimalen Ziffern an. Format("{:p}", 255) beispielsweise gibt 000000FF zurück.
s Zeichenkette Spezifiziert eine Zeichenkette. Wenn der Eingabewert numerisch ist, wird er unter Beachtung des aktuellen Zahlenformats des Skripts automatisch in eine Zeichenkette umgewandelt, bevor die Argumente Breite und Genauigkeit angewendet werden.
c Zeichencode Gibt ein einzelnes Zeichen über seinen Ordinalwert an, ähnlich wie Chr(n). Wenn der Eingabewert außerhalb des erwarteten Bereichs liegt, wird er umgekehrt. Format("{:c}", 116) beispielsweise gibt t zurück.

Bemerkungen

Größenspezifikationen wie bei printf werden nicht unterstützt. Alle Integer und Floating-Point-Eingabewerte haben eine Größe von 64-Bit.

SetFormat, FormatTime

Beispiele

Zeigt verschiedene Verwendungsmöglichkeiten.

; Einfache Substitution
s .= Format("{2}, {1}!`r`n", "Welt", "Hallo")
; Auffüllen mit Leerzeichen
s .= Format("|{:-10}|`r`n|{:10}|`r`n", "Links", "Rechts")
; Hexadezimal
s .= Format("{1:#x} {2:X} 0x{3:x}`r`n", 3735928559, 195948557, 0)
; Floating-Point
s .= Format("{1:0.3f} {1:.10f}", 4*ATan(1))

ListVars  ; Benutzt das Hauptfenster von AutoHotkey zum Anzeigen von gleichbreiten Zeichen.
WinWaitActive ahk_class AutoHotkey
ControlSetText Edit1, %s%
WinWaitClose