Recherche générique de pls sous chaines

cs_radada Messages postés 488 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 21 avril 2009 - 2 janv. 2004 à 20:52
cs_radada Messages postés 488 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 21 avril 2009 - 3 janv. 2004 à 17:33
Salut les gars : )

Ca va??? Bon réveillon??? Bon allez, je vous emmerde dés le début d'année. Je souhaite en fait trouver plein de sous chaines commencant toutes par le même caractère % (la suite pouvant être variable, mais toujours sur 2 caractères en plus du %) et les remplacer par le code ascii correspondant. En fait c'est super simple : dans un texte, j'ai des %20, des %13 (et plein d'autres) et en fait, je voudrais pouvoir remplacer le %20 par Asc(20) (espace donc), le %13 par Asc(13), etc... et ceci, sans faire de boucle bien sur, en testant simplement les 2 caractères derrière un % et en faisant un replace ; ). C'est possible docteur??? %Merci d'avance :D:D

5 réponses

cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
2 janv. 2004 à 22:59
labout
Utilise la fonction split de ta chaine
dim Tableau() as string
tableau=split(chaine,"%")
Tu remplace ensuite pour chaque élément du tableau par la valeur ascii
Seul petit problème c'est que le premier élément sera vide
Supposons que tu ai dans ta chaine
%20%30%32%21%64
tableau(0) contiendra ""
tableau(1) contiendra 20 etc
ensuite
for i=1 to ubound(tableau)
tableau(i)=chr(tableau(i))

Salut et bonne année
0
cs_radada Messages postés 488 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 21 avril 2009 1
3 janv. 2004 à 12:54
Ca peut marcher, mais le pb c'est que ma chaine contient d'autres caractères alphabétiques : ((. Je vais le faire en C++, ça ira + vite... Merci quand même et bonne année ausi ; )
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
3 janv. 2004 à 16:12
Bonjour, bonne année, bonne santé, bonne prog & tutti quanti

Ta chaîne étant dans la variable Texte,

Do
    Place =  InStr(Texte, "%")
    If Place = 0 Then Exit Do
    Texte = Left$(Texte, Place - 1) & Chr$(Val(Mid$(Texte, Place + 1, 2))) & Mid$(Texte, Place + 3)
Loop


quoique ... quand tu écris
remplacer le %20 par <s>Asc</s> Chr$(20) (espace donc) ,
ça veut dire que tes nombres sont en hexadécimal puisqueespace Chr$(32) Chr$(&H20)

Il faut donc, dans ce cas remplacer, dans le code ci-dessus,

Chr$(Val(Mid$(Texte, Place + 1, 2))) par

Chr$(Val("&H" & Mid$(Texte, Place + 1, 2)))

En revanche, si les codes ASCII sont en décimal, le code fonctionne tel quel.
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
3 janv. 2004 à 16:18
.... petit détail : il y a bien une boucle Do ... Loop mais il faut bien faire le tour de la chaîne pour vérifier que tous les %xy ont été traités.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_radada Messages postés 488 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 21 avril 2009 1
3 janv. 2004 à 17:33
Lol, ouais je me suis trompé entre le Asc et le Chr, et merci beaucoup pour ton aide, mais je l'ai fait en C++ du coup. Mais j'essaierai avec ta méthode en tout cas. Merci encore et bonne année à toi aussi ; ))
0
Rejoignez-nous