tuple_string
— Konvertieren eines Tupels in ein Tupel von Strings.
tuple_string
konvertiert Zahlen in Strings und modifiziert
Strings. Der Operator hat zwei Parameter: T
enthält die Zahlen
oder Strings, die konvertiert werden sollen. Format
spezifiziert die Konversion.
Im folgenden werden zuerst einige Beispiele für die Benutzung von
tuple_string
gegeben und anschließend die Struktur des
Format
-Strings erläutert.
Beispiele
Beispiele für die Konvertierung von Zahlen in Strings:
T (Input) |
Format (Input) |
String (Output) |
23 | '10.2f' | ' 23.00' |
23 | '-10.2f' | '23.00 ' |
4 | '.7f' | '4.0000000' |
1234.56789 | '+10.3f' | ' +1234.568' |
255 | 'x' | 'ff' |
255 | 'X' | 'FF' |
0xff | '.5d' | '00255' |
Beispiele für die Modifikation von Strings:
T (Input) |
Format (Input) |
String (Output) |
'total' | '10s' | ' total' |
'total' | '-10s' | 'total ' |
'total' | '-10.3s' | 'tot ' |
Format-String
Der Format
-String besteht aus den folgenden vier Teilen:
<flags><field width><precision><conversion characters>
flags
Null oder mehr Flags, in beliebiger Reihenfolge, die die Bedeutung der Konversionsspezifikation modifizieren. Die Flags können aus den folgenden Zeichen bestehen:
-
Das Ergebnis der Konversion wird links im Ergebnisfeld ausgerichtet.
+
Das Ergebnis einer
vorzeichenbehafteten Konversion fängt immer mit dem Vorzeichen an,
also +
oder -
.
space
>
Falls das erste
Zeichen einer vorzeichenbehafteten Konversion kein Vorzeichen ist,
wird ein Leerzeichen vor das Ergebnis eingefügt. Falls das
<space>
Flag und das +
Flag gleichzeitig angegeben werden, wird das
<space>
Flag ignoriert.
#
Der Wert soll in eine
„alternativen Form“ konvertiert werden. Für die d
und
s
Konversionen hat dieses Flag keine Auswirkungen. Bei der
o
Konversion (siehe unten) erhöht es die Präzision, so
dass das erste Zeichen immer als 0 ausgegeben wird. Bei den
x
oder X
Konversionen (siehe unten) wird an
Ergebnisse ungleich Null immer 0x
oder 0X
am
Anfang eingefügt. Bei den e
, E
, f
,
g
, und G
Konversionen enthält das Ergebnis immer
den Dezimalpunkt, selbst wenn auf den Dezimalpunkt keine Ziffern
folgen. Bei den g
, und G
Konversionen werden
außerdem, im Gegensatz zum normalen Verhalten, abschließende
Nullen nicht entfernt.
field width
Eine optionale Zeichenfolge von Dezimalziffern, die eine minimale Breite des Ergebnisfeldes spezifiziert. Falls der konvertierte Wert weniger Zeichen als die Feldbreite hat, wird er links (oder rechts, falls das Linksausrichtungsflag - spezifiziert worden ist) mit Leerzeichen bis zur Feldbreite aufgefüllt.
precision
Die Präzision
spezifiziert die minimale Anzahl von Ziffern, die für die
d
, o
, x
, oder X
Konversionen
ausgegeben werden soll (das Ergebnisfeld wird mit führenden Nullen
aufgefüllt). Für die e
und f
Konversionen
spezifiziert sie die Anzahl der Ziffern, die hinter dem Dezimalpunkt
erscheinen sollen, für die g
Konversion die maximale
Anzahl von signifikanten Stellen, und für die s
Konversion
die maximale Anzahl von Zeichen, die von einem String ausgegeben
werden sollen. Die Präzision hat die Form .
gefolgt von
einr Folge von Dezimalzahlen. Eine leere Folge wird als Null
interpretiert.
conversion characters
Ein Konversionszeichen spezifiziert die Art der Konversion, die auszuführen ist:
d,o,x,X
Das ganzzahlige
Argument wird als vorzeichenbehaftete Dezimalzahl (d
),
vorzeichenlose Oktalzahl (o
) oder vorzeichenlose
Hezadezimalzahl (x
und X
) ausgegeben. Die
x
Konversion verwendet die Zeichen und Buchstaben
0123456789abcdef
, während die X
Konversion
0123456789ABCDEF
verwendet. Die Präzision spezifiziert
hier die minimale Anzahl von Ziffern, die ausgegeben werden sollen.
Wenn die zu konvertierende Zahl mit weniger Ziffern repräsentiert
werden kann als das angegebene Minimum, werden führende Nullen
eingefügt. Wenn nichts anderes angegeben wird, ist die Präzision
1. Wenn die Zahl 0 mit einer Präzision von 0 ausgegeben werden
soll, wird ein leerer String erzeugt.
f
Die Gleitkommazahl im Argument
wird in dezimaler Notation in folgender Art ausgegeben:
[-]ddd.ddd
. Hierbei ist die Anzahl Ziffern hinter dem
Dezimalpunkt gleich der Präzision. Wenn die Präzision nicht
angegeben wird, werden sechs Ziffern ausgegeben; wenn die
Präzision explizit auf 0 gesetzt wird, werden kein Dezimalpunkt und
keine Nachkommastellen ausgegeben.
e,E
Die Gleitkommazahl im Argument
wird in dezimaler Notation in folgender Art ausgegeben:
[-]d.ddde
±dd
, wobei genau eine Zahl vor
dem Dezimalpunkt steht und die Anzahl von Ziffern hinter dem
Dezimalpunkt gleich der Präzision ist. Wenn die Präzision nicht
angegeben wird, werden sechs Ziffern ausgegeben; wenn die
Präzision explizit auf 0 gesetzt wird, werden kein Dezimalpunkt und
keine Nachkommastellen ausgegeben. In der E
Konversion
wird der Exponent in der Ausgabe durch E
anstelle von
e
gekennzeichnet. Der Exponent enthält immer mindestens
zwei Ziffern. Falls die auszugebende Zahl mehr als zwei Ziffern im
Exponenten benötigt, werden weitere Ziffern ausgegeben.
g,G
Die Gleitkommazahl im Argument
wird in der Art der f
oder e
Konversionen (oder in
der Art der E
Konversion, falls die G
Konversion
spezifiziert worden ist) ausgegeben, wobei die Präzision die Anzahl
der signifikanten Stellen angibt. Die Art der Konversion hängt von
der zu konvertierenden Zahl ab; die e
Konversion wird nur
dann verwendet, wenn der Exponent des Ergebnisses der Konversion
kleiner als -4 oder größer gleich der Präzision ist.
Abschließende Nullen werden aus dem Ergebnis entfernt. Ein
Dezimalpunkt wird nur ausgegeben, falls er von einer Ziffer gefolgt
wird.
s
Von dem String-Argument werden solange Zeichen ausgegeben, bis das Ende des Strings oder die in der Präzision angegebene Anzahl von Zeichen erreicht ist. Wenn die Präzision nicht angegeben wird, wird sie als unendlich groß interpretiert und alle Zeichen bis zum Ende des Strings werden ausgegeben.
b
Ähnlich wie die s
Konversion, nur dass der String sog. Backslash-Escape-Sequenzen
(Zeichenfolgen, die mit \\
beginnen) enthalten kann, die in
die Zeichen, die sie repräsentieren umgewandelt werden.
In keinem Fall führt eine nicht existierende oder ungenügende Feldbreite zur Beschneidung des Feldes; wenn das Ergebnis der Konversion breiter als die Feldbreite ist, wird das Feld verbreitert, so dass das Ergebnis hineinpasst.
Falls eines oder mehrere Eingabetupel leer sind, wird eine Fehlermeldung angezeigt.
HDevelop unterstützt eine Inline-Operation für tuple_string
,
die innerhalb eines Ausdrucks in der folgenden Syntax verwendet werden
kann:
T
(input_control) tuple(-array) →
(real / integer / string)
Eingabetupel.
Format
(input_control) string →
(string)
Format-String.
String
(output_control) string(-array) →
(string)
In Strings konvertiertes Eingabetupel.
* * ' 23.00' tuple_string (23, '10.2f', String) String := 23$'10.2f' * * '23.00 ' tuple_string (23, '-10.2f', String) String := 23$'-10.2f' * * '4.0000000' tuple_string (4, '.7f', String) String := 4$'.7f' * * ' +1234.568' tuple_string (1234.56789, '+10.3f', String) String := 1234.56789$'+10.3f' * * 'ff' tuple_string (255, 'x', String) String := 255$'x' * * 'FF' tuple_string (255, 'X', String) String := 255$'X' * * '00255' tuple_string (0xff, '.5d', String) String := 0xff$'.5d' * * ' total' tuple_string ('total', '10s', String) String := 'total'$'10s' * * 'total ' tuple_string ('total', '-10s', String) String := 'total'$'-10s' * * 'tot ' tuple_string ('total', '-10.3s', String) String := 'total'$'-10.3s'
Foundation