Formate une chaîne (similaire à la fonction sprintf() du C).
StringFormat ( "format control" [, var1 [, ... var32]] )
format control | Le format et les flags à utiliser (Voir Remarques). |
var1...var32 | Jusqu'à 32 variables qui seront affichées selon le paramètre "format control". |
Pour éviter le débordement de la mémoire tampon, chaque "variable" est limitée à 65535 caractères.
Les caractères d'échappement peuvent être utilisés dans la chaîne "format control" comme \n (@LF), \r (@CR), \t (@TAB). Donc, si vous voulez avoir un \ vous devez utiliser \\, de même pour %, vous devez utiliser %%.
La "variable format" est %[flags] [width] [.precision] type
Si une spécification de format est invalide, le comportement est indéfini. Si vous spécifiez une entrée non valide, vous pouvez créer des circonstances spéciales non gérée et provoquer la fin du programme.
Spécification Width
Le deuxième champ optionnel de la spécification du format est la largeur. L'argument 'width' est un entier décimal non négatif contrôlant le nombre minimum de caractères affichés. Si le nombre de caractères à afficher est inférieur à la largeur spécifiée, des espaces sont ajoutés à gauche ou à droite (suivant la valeur du flag pour un alignement à gauche), jusqu'à ce que la largeur minimale soit atteinte. Si la largeur est précédé de 0, des zéros sont ajoutés jusqu'à ce que la largeur minimale soit atteinte (inutile pour les nombres alignés à gauche).
La spécification de largeur ne provoque jamais une valeur à tronquer. Si le nombre de caractères de la valeur de sortie est supérieur à la largeur spécifiée, ou si la largeur n'est pas donnée, tous les caractères de la valeur sont affichés (sous réserve de la spécification de précision).
Spécification Type
Type | Type de Variable | Format de sortie |
---|---|---|
d, i | Integer | Entier décimal signé. |
o | Integer | Entier octal non signé. |
u | Integer | Entier décimal non signé. |
x | Integer | Entier non signé en hexadécimal, qui utilise "abcdef". |
X | Integer | Entier hexadécimal non signé, qui utilise "ABCDEF". |
e | Float | Valeur signée de la forme [ - ]d.dddd e [sign]ddd où d est un chiffre décimal simple, dddd est au moins un chiffre décimal, ddd est exactement trois chiffres décimaux, et sign est + ou -. |
E | Float | Identique au format e sauf que E plutôt que e introduit la notation exponentielle. |
f | Float | Valeur signé ayant la forme [ - ]dddd.dddd, où dddd est au moins un chiffre décimal. Le nombre de chiffres avant le point décimal dépend de l'importance du nombre, et le nombre de chiffres après le point décimal dépend de la précision demandée. |
g | Float | Valeur signée affichée dans le format f ou e, whichever is more compact for the given value and precision. Le format e est utilisé uniquement lorsque l'exposant de la valeur est inférieur à -4 ou supérieur ou égal à l'argument de précision. Les zéros à droite sont tronqués, et le point décimal apparaît uniquement si un ou plusieurs chiffres suivent. |
G | Float | Identique au format g format, sauf que E, plutôt que e, introduit la notation exponentielle (le cas échéant). |
s | String | String |
Flag | Signification | Par défaut |
---|---|---|
- | Aligne à gauche le résultat dans la largeur donnée du champ. | Aligne à droite. |
+ | Préfixe la valeur de sortie du signe (+ ou -) si elle est d'un type signé. | Le signe ne s'affiche que pour les valeurs négatives signés (-). |
0 | Si width est précédée d'un 0, des zéros sont ajoutés jusqu'à ce que le minimim 'width' soit atteint. Si 0 et - apparaisse, le 0 est ignoré. Si 0 est spécifié avec un format 'integer' (i, u, x, X, o, d) alors le 0 est ignoré. | Pas de rembourrage. |
Blank | Précède la valeur de sortie avec un espace si elle est signée et positive; l'espace est ignoré si les flags 'blank' et '+' sont levés. | Pas d'espace n'est rajouté. |
# | Lorsqu'il est utilisé avec les formats o, x, ou X, le flag # préfixe une valeur de sortie non nulle avec 0, 0x ou 0X, respectivement. | Pas de 0 n'est rajouté. |
# | Lorsqu'il est utilisé avec les formats e, E, ou f, le flag # force la valeur de sortie à contenir un point décimal dans tous les cas. | Le point décimal n'apparaît que si des chiffres suivent. |
# | Lorsqu'il est utilisé avec les formats g ou G, le flag # force la valeur de sortie à contenir un point décimal dans tous les cas et empêche la troncature des zéros. Ignoré quand utisé avec d, i, u, or s . |
Le point décimal n'apparaît que si des chiffres le suivent. Les zéros à droite sont tronqués. |
Type | Signification | Par défaut |
---|---|---|
d, i, u, o, x, X | La précision indique le nombre minimum de chiffres à afficher. Si le nombre de chiffres dans l'argument est inférieur à la précision, la valeur de sortie est complétée à gauche par des zéros. La valeur n'est pas tronquée lorsque le nombre de chiffres dépasse précision. | La précision par défaut est 1. |
e, E | La précision spécifie le nombre de chiffres à afficher après le point décimal. Le dernier chiffre affiché est arrondie. | La précision par défaut est 6; si la précision est 0 ou si le point (.) apparaît non suivi d'un chiffre, le point décimal n'est pas affiché. |
f | La valeur de précision spécifie le nombre de chiffres après le point décimal. Si le point décimal est affiché, au moins un chiffre apparait devant. La valeur est arrondie au nombre de chiffres approprié. | La précision par défaut est 6; si la précision est 0, ou si le point (.) apparaît non suivi d'un chiffre, le point décimal n'est pas affiché. |
g, G | La précision spécifie le nombre maximum de chiffres significatifs affichés. | Six chiffres significatifs sont affichés, avec les zéros tronqués. |
s | La précision indique le nombre maximal de caractères à afficher. Les caractères qui excèdent la précision ne sont pas affichés. | Les caractères sont affichés jusqu'à ce qu'un caractère nul soit rencontré. |
Example() Func Example() Local $iInt_Unsigned = 43951789 Local $iInt_Negative = -43951789 ConsoleWrite(@CRLF & "Numeric Formats" & @CRLF) PrintFormat($iInt_Unsigned, "%d", "Entier positif standard sans signe", 1) ;43951789 PrintFormat($iInt_Negative, "%d", "Entier négatif standard avec signe", 1) ;-43951789 PrintFormat($iInt_Unsigned, "%i", "Entier standard", 1) ;43951789 PrintFormat($iInt_Unsigned, "%09i", "9 chiffres avec des zéro à gauche", 1) ;043951789 PrintFormat($iInt_Unsigned, "%e", "Notation scientifique") ;4.395179e+007 PrintFormat($iInt_Unsigned, "%u", "Entier non signé avec entier positif", 1) ;43951789 PrintFormat($iInt_Negative, "%u", "Entier non signé avec entier négatif", 1) ;4251015507 PrintFormat($iInt_Unsigned, "%f", "Virgule flottante") ;43951789.000000 PrintFormat($iInt_Unsigned, "%.2f", "Virgule flottante avec 2 chiffre après le point décimal ", 1) ;43.951.789,00 PrintFormat($iInt_Unsigned, "%o", "Octal", 1) ;247523255 PrintFormat($iInt_Unsigned, "%s", "String", 1) ;43951789 PrintFormat($iInt_Unsigned, "%x", "Hexadécimal (minuscule)", 1) ;29ea6ad PrintFormat($iInt_Unsigned, "%X", "Hexadécimal (majuscule)", 1) ;29EA6AD PrintFormat($iInt_Unsigned, "%+d", "Signe spécifié devant un entier positif", 1) ;+43951789 PrintFormat($iInt_Negative, "%+d", "Signe spécifié devant un entier négatif", 1) ;-43951789 Local $sString = "string" Local $sString_Long = "longer string" ConsoleWrite(@CRLF & "String Formats - [ ] utilisés pour montrer le début/fin de la chaîne" & @CRLF) PrintFormat($sString, "[%s]", "chaîne standard", 1) ; [chaîne] PrintFormat($sString, "[%10s]", "10 caractères justifiés à droite avec ajout d'espaces") ; [ Chaîne] PrintFormat($sString, "[%-10s]", "10 caractères justifiés à gauche avec ajout d'espaces") ; [chaîne ] PrintFormat($sString_Long, "[%10.8s]", "Justifié à droite mais précision 8 donc tronqué") ; [ longer s] PrintFormat($sString_Long, "[%-10.8s]", "Justifié à gauche mais précision 8 donc tronqué") ; [longer s ] PrintFormat($sString, "[%010s]", "10 caractères avec des zéro à gauche") ; [0000string] ConsoleWrite(@CRLF & "Date Format - chaque % utilise un nouveau paramètre" & @CRLF) ConsoleWrite('"%02i\%02i\%04i" sur (1, 9, 2013) => '& StringFormat("%02i\%02i\%04i", 1, 9, 2013) & @CRLF & @CRLF) EndFunc ;==>Example Func PrintFormat($vVar, $sFormat, $sExplan, $iTab = 0) ConsoleWrite('"' & $sFormat & '" sur ' & $vVar & @TAB & ' => '& StringFormat($sFormat, $vVar)) If $iTab Then ConsoleWrite(@TAB) ConsoleWrite(@TAB & " ; " & $sExplan & @CRLF) EndFunc ;==>PrintFormat