FAQ Flash 8
FAQ Flash 8Consultez toutes les FAQ
Nombre d'auteurs : 6, nombre de questions : 84, dernière mise à jour : 15 juin 2021
- Comment extraire une partie d'une chaîne de caractères ?
- Comment remplacer toutes les occurences d'un mot (sous-chaîne) dans une chaîne de caractères ?
- Comment supprimer les espaces en début et fin de chaîne ?
- Comment mettre une chaîne de caractères en majuscules/minuscules ?
- Comment inverser une chaîne de caractères ?
Il faut pour cela utiliser une des deux méthodes suivantes de la classe String :
- substr
- substring
La méthode substr prend en paramètre l'index de départ de la chaîne à extraire ainsi que la longueur de la chaîne à extraire.
La méthode substring prend, elle aussi, comme premier paramètre l'index de départ de la chaîne à extraire. Pas contre, elle prend l'index du premier caractère suivant la chaîne à extraire comme second paramètre.
Cans cet exemple, nous souhaitons extraire l'article "un" de la chaîne.
var
sChaineInitiale:
String
=
"Ceci est un exemple"
;
trace
(
sChaineInitiale.
substr
(
9
,
2
));
// 9 représentant l'index du u, 2 la longueur du mot extrait
trace
(
sChaineInitiale.
substring
(
9
,
11
));
// 9 représentant l'index du u, 11 l'index de l'espace qui suit le mot un
Remarque : Comme pour les tableaux, le premier index est 0.
Il n'existe malheureusement pas de méthode "native" à Flash permettant cela.
Pour remédier à cela, nous allons utiliser les méthodes String.split et Array.join qui permettent respectivement de séparer une chaîne de caractères et de convertir les éléments d'un tableau en chaînes avec un mot de liaison.
Exemple :
function
replace
(
sChaineInitiale:
String
,
sSeparateurARemplacer:
String
,
sSeparateurAInserer:
String
):
String
{
return
(
sChaineInitiale.
split
(
sSeparateurARemplacer)).
join
(
sSeparateurAInserer);
}
// Usage
var
sAncienneChaine:
String
=
"Ceci est un elpmexe intéressant"
;
var
sNouvelleChaine:
String
=
replace
(
sAncienneChaine,
"elpmexe"
,
"exemple"
);
trace
(
sNouvelleChaine);
Cette fonctionnalité n'existe pas de manière native dans Flash.
Cependant les méthodes charCodeAt et substring permettent de réaliser une telle fonction
function
trim
(
s:
String
):
String
{
var
nEspace:
Number
=
32
;
// Code représentant l'espace
var
nBegin:
Number
=
0
;
var
nEnd:
Number
=
s.
length
;
var
c:
Number
=
s.
charCodeAt
(
nBegin) ;
while
(
c ==
nEspace) {
c =
s.
charCodeAt
(++
nBegin) ;
}
c =
s.
charCodeAt
(
nEnd-
1
);
// -1 car les index commencent à 0
while
(
c ==
nEspace) {
c =
s.
charCodeAt
(--
nEnd) ;
}
return
s.
substring
(
nBegin,
nEnd+
1
);
// +1 car le second paramètre est l'index du premier caractère suivant la chaîne à extraire
}
// Usage
var
sAncienneChaine:
String
=
" Ceci est une chaîne avec des espaces inutiles au début et à la fin "
;
var
sNouvelleChaine:
String
=
trim
(
sAncienneChaine);
trace
(
"->"
+
sNouvelleChaine+
"<-"
);
Pour cela, il suffit d'utiliser les méthodes toUpperCase et toLowerCase fournies par la classe String
Exemple :
var
s:
String
=
"Une chaîne de CARACTÈRES"
;
trace
(
s.
toUpperCase
(
));
// ==> UNE CHAÎNE DE CARACTÈRES
trace
(
s.
toLowerCase
(
));
// ==> une chaîne de caractères
A noter que ces méthodes conservent les accents.
Pour cela, nous allons utiliser une fonction interressante de la classe Array qui inverse l'ordre des éléments d'un tableau : la fonction reverse.
Cela consiste donc à convertir notre chaîne en tableau, inverser l'ordre de ce tableau, puis joindre ses éléments pour obtenir, à nouveau, une chaîne.
function
reverse
(
s:
String
):
String
{
var
a:
Array
=
s.
split
(
""
);
a.
reverse
(
);
return
a.
join
(
""
);
}
// Usage
var
sMaChaine =
"Ceci est ma chaîne !"
;
trace
(
reverse
(
sMaChaine));
// Sortie : ! enîahc am tse iceC