banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Tue 08 October 2024 17:07

Laurine B
Juste Inscrit !
Date d'inscription: 8 Oct 2024
Messages: 5

QGIS 3.4.4 Madeira: Remplacer une partie du texte d un champ

Bonjour,

Je viens de lire vos échanges car j'ai le même problème. J'ai un champ nommé "eunis1" qui contient : (un code + un %) , exemple : (E3.51[95%]). J'ai énormément de data à traiter dont les codes et % changent. Je souhaite obtenir : E3.51
Dans la calculatrice de champ j'ai demandé à mettre à jour le champ "eunis1" puis j'ai utilisé la fonction replace : replace("eunis1",'()','') pour enlever seulement les () extérieures dans un premier temps, mais la prévisualisation indique "Null" puis en faisant ok il ne se passe rien. J'ai essayé plusieurs façons, en rajoutant des espaces ou des ';' à la place des ','. ça ne change rien. J'ai aussi essayé : replace("eunis1",'[*]','') pour essayé de supprimer les crochets et les %, mais ça ne fonctionne pas non plus. Je suis à cours de solution, je ne comprends pas le soucis. Même après avoir fermer/réouvert le projet et idem pour la shp concernée.

Merci à vous et belle journée.

Hors ligne

 

#2 Tue 08 October 2024 17:54

cyrille
Participant assidu
Date d'inscription: 7 Feb 2006
Messages: 401

Re: QGIS 3.4.4 Madeira: Remplacer une partie du texte d un champ

Bonjour
J'ai l'impression que vous souhaitez obtenir les 5 caractères les plus à gauche de la cellule en excluant le 1er.
? Dans ce cas pourquoi ne pas utiliser la fonction fonction substr :
substr("eunis1", 2, 5) ?
Voire l'aide en ligne dans la calculatrice de champs.

Hors ligne

 

#3 Wed 09 October 2024 10:26

Laurine B
Juste Inscrit !
Date d'inscription: 8 Oct 2024
Messages: 5

Re: QGIS 3.4.4 Madeira: Remplacer une partie du texte d un champ

Bonjour,
Merci de votre retour, j'ai essayé avec cette formule, mais le soucis c'est que la longueur du code + le [%] varie (se sont des codes habitats naturels). Par exemple j'ai évoqué E3.51[95%] mais j'ai aussi d'autres codes + long ou plus petits par ex : G3.713[10%] ou encore F4.1[60%]. Donc si j'utilise la fonction "substr"comme conseillé et bien sur certains code je perds de l'info et d'autres il me reste le "[". C'est pour ça que je cherchais à ce que qgis me détecte uniquement les [] et leur %.

point positif : les "()" aux extrémités n'existent plus, mais je ne sais pas comment elles se sont envolées... je n'ai plus que ces % et crochets à suppr...

je continue de chercher...

Excellente journée à vous.

Hors ligne

 

#4 Wed 09 October 2024 11:41

dave31
Participant actif
Date d'inscription: 17 Feb 2017
Messages: 82

Re: QGIS 3.4.4 Madeira: Remplacer une partie du texte d un champ

Bonjour,

Avec des regexp ? :

Code:

regexp_substr(eunis1,'(.*)\\[')

ou

Code:

regexp_replace(eunis1,'(.*)\\[.*','\\1')

Regardez les exemples pour ces fonctions dans la calculatrice de champ

Hors ligne

 

#5 Wed 09 October 2024 13:22

GlaDal
Participant assidu
Date d'inscription: 30 Aug 2013
Messages: 1088

Re: QGIS 3.4.4 Madeira: Remplacer une partie du texte d un champ

ou ça :

Code:

string_to_array("eunis1", '[')[0]

Vous récupérez le texte qui se situe avant (0) le symbole [

Hors ligne

 

#6 Wed 09 October 2024 13:42

Heisenberg77
Juste Inscrit !
Lieu: melun
Date d'inscription: 8 Nov 2021
Messages: 7

Re: QGIS 3.4.4 Madeira: Remplacer une partie du texte d un champ

Bonjour,

La fonction replace ne fonctionne qu'avec un élément à remplacer à la fois.
Par exemple : replace("eunis1",'(','') puis replace("eunis1",')','') ou une combinaison des deux :
replace(replace("eunis1",')',''),'(','')

Hors ligne

 

#7 Wed 09 October 2024 14:59

Laurine B
Juste Inscrit !
Date d'inscription: 8 Oct 2024
Messages: 5

Re: QGIS 3.4.4 Madeira: Remplacer une partie du texte d un champ

Re bonjour,

Merci à tous pour vos réponses vous êtes au top! David 31 la fonction regexp_replace fonctionne très bien ainsi que celle proposé par GlaDal!!! Je vais essayé de les comprendre maintenant et pas juste les utiliser bêtement.

Merci Eisenberg77 pour les explications, je suis encore novice sur l'utilisation d'expression et je ne comprends pas toujours la signification des symboles. Donc avec replace("eunis1",'[.*]','') il ne pouvait pas comprendre qu'il devait enlever les [] et les %  (qui variaient de 50 à 100). Je pensais pourtant que [.*] signifiait "peu importe ce qu'il y a entre crochet"... Mais peut-être que je me trompe !


Belle après-midi à tous.

Hors ligne

 

#8 Thu 10 October 2024 15:45

GlaDal
Participant assidu
Date d'inscription: 30 Aug 2013
Messages: 1088

Re: QGIS 3.4.4 Madeira: Remplacer une partie du texte d un champ

BOnjour,

Il y a un site qui peut aider à comprendre : https://hfcqgis.opendatasicilia.it/calc … ield_calc/

Sinon concernant les array vous avez ça : https://bogind.blogspot.com/2021/10/exp … art-5.html

Hors ligne

 

#9 Fri 11 October 2024 09:31

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3944

Re: QGIS 3.4.4 Madeira: Remplacer une partie du texte d un champ

Bonjour,

Je pensais pourtant que [.*] signifiait "peu importe ce qu'il y a entre crochet"...


Oui, mais dans un contexte d'expression régulière (alias regex), ce qui n'est pas le cas de la fonction replace, mais de la fonction regexp_replace.

Hors ligne

 

#10 Fri 11 October 2024 11:49

Laurine B
Juste Inscrit !
Date d'inscription: 8 Oct 2024
Messages: 5

Re: QGIS 3.4.4 Madeira: Remplacer une partie du texte d un champ

Bonjour,

Super merci pour vos réponse GlaDal et SANTANNA!!
Bonne journée à vous!

Hors ligne

 

Pied de page des forums

Powered by FluxBB