Pages: 1
- Sujet précédent - QGIS 3.4.4 Madeira: Remplacer une partie du texte d un champ - Sujet suivant
#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
Pages: 1
- Sujet précédent - QGIS 3.4.4 Madeira: Remplacer une partie du texte d un champ - Sujet suivant