Java, html, javascript et fonction split [Résolu/Fermé]

Signaler
Messages postés
538
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
4 avril 2017
-
Messages postés
538
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
4 avril 2017
-
Bonjour,

Je vais essayer d'être aussi clair que possible pour expliquer mon problème :

J'ai une page web dans laquelle je veux mettre une liste déroulante
Pour faire ma liste déroulante je récupère un string passer en paramètre avec dedans la liste des valeur sous la forme "val1|val2|val3"
Ensuite je fais un String[] tabValeur=maliste.split("|"); pour récupéré mes valeurs dans un tableau
et une boucle for de 0 a tabValeur.length pour remplir ma liste

Mon problème viens du fait que apparemment la fonction "split" ne découpe pas ma chaine seulement sur les caractère "|" mais sur chaque caractères.
Du coup dans ma page web, au lieu d'avoir ma liste :

val1
val2
val3

j'ai :
v
a
l
1
|
v
a
l
2
|
....
....

Si vous pouviez m'aider a trouver d'où ça viens....
N'hésiter pas à me demander des précisions si besoin

merci d'avance

Ci dessous le bout de code qui pose problème :

<% String maListe = request.getParameter("maListeDeVal"); 
	if (maListe != null) {%>
		<%String[] tabValeur = maListe.split("|");%>
		<select name="listeDeChoix" id="listeDeChoix" onchange="show('reload')">
		<option></option>
		<%for (int i = 0; i<tabValeur .length;i++){%>
			<%String tmp = tabvaleur [i];
			<option value="<%=tmp %>" id="listeDeChoix_<%=tmp %>"><%=tmp %></option>
		<%}%>
		</select>
	<%}%>



1 réponse

Messages postés
16372
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 juillet 2021
2 858
split prend en paramètre une expression régulière, or le symbole | est réservé dans l'expression des Pattern pour faire un OU logique. Ainsi, split("|") représente un Pattern X|Y avec X et Y qui représentent le mot nul, du coup chaque caractère est récupéré car il y a une infinité de mots nuls entre chacun d'eux.
Pour faire ce que tu veux tu devrais échapper ce caractère spécial pour au final avoir un split("\\|");
Je n'ai pas testé mais je te laisse confirmer que ça marche mieux (ou non) comme ça...
La confiance n'exclut pas le contrôle
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
538
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
4 avril 2017
97
OK
C'était tout con effectivement......
Merci