PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → extraire élement d'une chaine de caracteres
extraire élement d'une chaine de caracteres
Iniciado por william_k, 23,nov. 2018 15:54 - 2 respuestas
Publicado el 23,noviembre 2018 - 15:54
Bonjour,

Je suis débutant en Wlangage et je cherche à extraire certains caractères dans une chaine.

Exemple: ["48.9195119","48.9217503","2.2119592","2.2141933"],"polygonpoints":[["2.2141933","48.9195119"],["2.2122588","48.9214567"],["2.2119592","48.9217503"]],"lat":"48.9214567","lon":"2.2122588","display_name":"Rue Louis Rameau, Bezons, Argenteuil, Val-d'Oise, Ile-de-France, Metropolitan France, 95870, France","class":"highway","type":"residential","importance":0.535,"address":{"road":"Rue Louis Rameau","town":"Bezons","county":"Argenteuil","state":"Ile-de-France","country":"France","postcode":"95870","country_code":"fr"}}]

J'ai juste besoin ici de stocker ce qu'il y a après lat et lon.

Merci d'avance
Miembro registrado
256 mensajes
Publicado el 23,noviembre 2018 - 18:09
Bonjour

Ca ressemble beaucoup à un extrait de JSON ça (il manque apparemment le début).
Si c'est bien du JSON, regardez :
- le type JSON (en version 24)
- la fonction JSONVersVariant (en version 23 et précédente)
Publicado el 26,noviembre 2018 - 12:01
Bonjour

Tu peux aussi utiliser les fonctions traitant des chaines de caractères.
Exemple est chaîne=
[
["48.9195119","48.9217503","2.2119592","2.2141933"],"polygonpoints":[["2.2141933","48.9195119"],["2.2122588","48.9214567"],["2.2119592","48.9217503"]],"lat":"48.9214567","lon":"2.2122588","display_name":"Rue Louis Rameau, Bezons, Argenteuil, Val-d'Oise, Ile-de-France, Metropolitan France, 95870, France","class":"highway","type":"residential","importance":0.535,"address":{"road":"Rue Louis Rameau","town":"Bezons","county":"Argenteuil","state":"Ile-de-France","country":"France","postcode":"95870","country_code":"fr"}}]
]

Latitude est réel
DebutLat est entier=Position(Exemple,""+"lat"":"+"")+ 6
FinLat est entier=Position(Exemple,",",DebutLat)-2

Latitude =Val(Exemple[[DebutLat A FinLat]])
Trace(Latitude)

Latitude=(Val(Milieu(Exemple,DebutLat,FinLat-DebutLat+1)))
Trace(Latitude)


Pour DebutLat :
On cherche une sous-chaîne composée d'un guillemet, du mot 'lat', du caractère ':' suivi d'un nouveau guillemet. Ce qui fait :
Position(Exemple,""+"lat"":"+""). On trouve alors l'emplacement du début de cette sous-chaîne et on lui ajoute 6, car elle mesure 6 caractères ; on trouve alors l'emplacement du début de la valeur cherchée, ici le chiffre 4 débutant '48.9214567'.
Pour Finlat:
On cherche la première virgule suivant DebutLat, qui se trouve donc à l'emplacement suivant DebutLat. On lui retire 2, car on retire l'emplacement de la virgule, et le guillemet précédent cette virgule. On trouve donc l'emplacement du 7 final de '48.9214567'.
On utilise ensuite les opérateurs [ et ] pour extraire la sous-chaine ainsi délimitée, qu'on traduit en numérique avec Val().
On peut utiliser également l'autre syntaxe avec Milieu().
Ces fonctions sont extrêmement utiles...
ElPato