Java, html, javascript et fonction split

Résolu/Fermé
batoune Messages postés 538 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 4 avril 2017 - 10 mai 2012 à 13:57
batoune Messages postés 538 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 4 avril 2017 - 10 mai 2012 à 14:14
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

KX Messages postés 16597 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 26 septembre 2022 2 975
Modifié par KX le 10/05/2012 à 14:08
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
batoune Messages postés 538 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 4 avril 2017 99
10 mai 2012 à 14:14
OK
C'était tout con effectivement......
Merci
0