Functions > String >


StringFormat

Formate une cha�ne (similaire � la fonction sprintf() du C).

StringFormat ( "format control" [, var1 [, ... var32]] )

Param�tres

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".

Valeur de retour

Retourne la cha�ne format�e selon le param�tre "format control".

Remarques

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

    Sp�cification Flag
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.

    Sp�cification Precision

Le troisi�me champ optionnel de la sp�cification du format est la sp�cification de la pr�cision. Il sp�cifie un entier d�cimal non n�gatif, pr�c�d� par un point (.), qui indique le nombre de caract�res � afficher, le nombre de d�cimales, ou le nombre de chiffres significatifs (voir le tableau ci-dessous). Contrairement � la sp�cification de largeur, la sp�cification de pr�cision peut entra�ner soit la troncature de la valeur de sortie, soit l'arrondi d'une valeur � virgule flottante. Si la pr�cision est d�finie � 0 et la valeur � convertir est �gale � 0, le r�sultat n'a aucun caract�re en sortie, comme indiqu� ci-dessous :

StringFormat("%.0d ", 0) ; Pas de caract�res en retour

    Comment la Pr�cision affecte le Type

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�.

Exemple

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