Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Passer d'un entier à une chaîne et vice-versa

2 réponses
Avatar
Gilles Chomel
Bonjour à tous:

Je viens de Delphi, aussi, je suis un peu dérouté par les types de variables
sous JS.

En Delphi, on passe d'une variable "entier" à sa représentation "chaîne"
avec une instruction du genre inttostr(i) où i est un nombre entier. Comment
fait-on cela en JS?

Par exemple imaginons que je veuille écrire une liste de nombre croissant
dans une textearea avec une boucle for:

for (i=0; i<20; i=i+1)
{
document.frm.txtarea.value=document.frm.txtarea.value+'\r'+ la chaîne
correspondant au nombre i
}

en prime, je veux que l'affichage soit cela:

01
02
03
04
05
06
07
08
09
10
11
12
13
...

Merci pour votre concours.

--
GC
http://pageperso.aol.fr/gilleschomel/index.html
http://gilles.chomel.free.fr/
http://gilles.chomel.free.fr/lavissan.htm

2 réponses

Avatar
YD
Bonjour à tous:


Bonjour,

Je viens de Delphi, aussi, je suis un peu dérouté par les types de variables
sous JS.


Le typage est plutôt faible : le moteur de script effectue les conversions à la
volée selon les arguments attendus par les opérateurs ou fonctions. Sinon il est
toujours possible de "forcer" la conversion de façon simple, par ex. si a est un
nombre que l'on veut convertir en chaîne :
a = "" + a;
ou l'inverse (a num --> string)
a = +a; (qui retourne NaN -- i.e. not a number -- si la valeur n'est pas
convertible et non 0 !)

En Delphi, on passe d'une variable "entier" à sa représentation "chaîne"
avec une instruction du genre inttostr(i) où i est un nombre entier. Comment
fait-on cela en JS?


cf. plus haut ! Il existe aussi une façon plus "académique" mais qui crée un
objet ex. : a = String(125); ou a = new String(125); mais dans ce cas précis
le langage opère la conversion sur la valeur 125 avant d'affecter "125" à la
valeur de l'objet a (String() attend un argument chaîne) ce qui revient à ce
que je disais plus haut ;-)

Par exemple imaginons que je veuille écrire une liste de nombre croissant
dans une textearea avec une boucle for:

for (i=0; i<20; i=i+1)
{
document.frm.txtarea.value=document.frm.txtarea.value+'r'+ la chaîne
correspondant au nombre i
}


En application de ce qui est dit avant simplement :
for (i=0; i<20; i=i+1)
document.frm.txtarea.value=document.frm.txtarea.value+'n'+ i;

(NB l'habitude est d'indiquer le saut de ligne plutôt par n)
+ est l'opérateur de concaténation et l'opérateur d'addition, mais par
définition, si un de ses opérandes est une chaîne, il effectue une
concaténation et renvoie une chaîne. Ainsi :
"a" + 3 + 2 --> "a32"
"a" + (3 + 2) --> "a5"
3 + 2 + "a" --> "5a"
3 + (2 + "a") --> "32a"

en prime, je veux que l'affichage soit cela:

01
....


document.frm.txtarea.value=document.frm.txtarea.value+'n'+ ('0'+i).replace(/.*(d{2})$/,'$1');

Ici j'utilise une expression régulière qui récupère les deux derniers caractères
numériques de la chaîne (qui est supposée se finir par deux caractères num. d
sinon elle renvoie "0la chaîne" c.à.d. la chaîne entrée puisque le motif de
correspondance n'est pas trouvé).

Merci pour votre concours.


Personnellement, je préfère un merci après... J'aime bien un petit feedback.

--
Y.D.

Avatar
Gilles Chomel
Merci YD pour ce véritable cours ! qui restera une référence pour mes
application JS.