#1 Thu 30 August 2007 17:34
[ArcGis 9.0] supprimer un caractere dans une chaine
Bonjour,
J'ai un trou de mémoire, suite au "crash" de ma couche de servitudes j'ai récupéré la quasi totalité des donneés avec un éxécutable. Le problème est qu'il m'a rajouté le caractère "0" dans tous mes champs texte et je cherche à m'en débarasser avec la calculette.
J'ai déjà tourné sur le site d'ESRI, il me propose de supprimer des espaces ou de récupérer une chaine depuis la gauche (fonction left) mais je ne parviens pas à faire démarrer la récupération depuis le second caractére à gauche..
Est ce que quelqu'un à une idée ?
Hors ligne
#2 Thu 30 August 2007 18:22
Re: [ArcGis 9.0] supprimer un caractere dans une chaine
Comme c'est du VB, je suppose qu'il faut fouiller dans l'aide de VBA et utiliser deux commandes
je ne parviens pas à faire démarrer la récupération depuis le second caractère à gauche..
Tu peux utiliser Len() et Right() par exemple sur un champ de données chaine de caractère [Monchamp] :
Code:
Right ([Monchamp],Len([Monchamp]) - 2)
=compte le nombre de caractère de la chaine, en totalise 2 de moins et coupe depuis la *droite*
Ce qui devrait donner pour exemple :
AZERTY > ERTY
GEOMATIQUE > OMATIQUE
Pour référence ultérieure, j'ai repris l'aide VBA que j'ai mis en forme pour le forum, je ne sais pas si Arcgis mange de tout mais bon, c'est là pour qui est intéressé. Se référer à l'aide VBA (taper F1) dans l'éditeur pour plus de détails
Mots clés de manipulation de chaînes :
Comparaison de deux chaînes :
* StrComp : Renvoie une valeur de type Variant (Integer) indiquant le résultat d'une comparaison de chaînes.
Conversion de chaînes :
* StrConv : Renvoie une valeur de type Variant (String) convertie au format indiqué.
Conversion en minuscules ou en majuscules :
* Format : Renvoie une valeur de type Variant (String) contenant une expression formatée en fonction des instructions contenues dans l'expression de mise en forme.
* Lcase : Renvoie une valeur de type String convertie en minuscules.
* UCase : Renvoie une valeur de type Variant (String) contenant la chaîne indiquée, convertie en majuscules.
Création de chaînes répétant un même caractère :
* Space : Renvoie une valeur de type Variant (String) comprenant le nombre d'espaces indiqué.
* String : Renvoie une valeur de type Variant (String) contenant une chaîne constituée d'un caractère répété sur la longueur indiquée.
Calcul de la longueur d'une chaîne :
* Len : Renvoie une valeur de type Long contenant le nombre de caractères d'une chaîne ou le nombre d'octets requis pour stocker une variable.
Mise en forme d'une chaîne :
* Format : Renvoie une valeur de type Variant (String) contenant une expression formatée en fonction des instructions contenues dans l'expression de mise en forme.
Alignement d'une chaîne :
* Lset : Aligne à gauche une chaîne située à l'intérieur d'une variable chaîne ou copie une variable d'un type défini par l'utilisateur vers une autre variable d'un autre type défini par l'utilisateur.
* RSet : Aligne à droite une chaîne à l'intérieur d'une variable chaîne.
Manipulation de chaînes :
*InStr : Renvoie une valeur de type Variant (Long) indiquant la position de la première occurrence d'une chaîne à l'intérieur d'une autre chaîne.
*Left : Renvoie une valeur de type Variant (String) contenant le nombre indiqué de caractères d'une chaîne en partant de la gauche.
*Ltrim : Renvoie une valeur de type Variant (String) contenant une copie d'une chaîne en supprimant les espaces de gauche (LTrim), les espaces de droite (RTrim) ou les deux (Trim).
*Mid : Renvoie une valeur de type Variant (String) contenant un nombre indiqué de caractères extraits d'une chaîne de caractères.
*Right : Renvoie une valeur de type Variant (String) contenant le nombre indiqué de caractères d'une chaîne en partant de la droite.
*RTrim : Renvoie une valeur de type Variant (String) contenant une copie d'une chaîne en supprimant les espaces de gauche (LTrim), les espaces de droite (RTrim) ou les deux (Trim).
*Trim : Renvoie une valeur de type Variant (String) contenant une copie d'une chaîne en supprimant les espaces de gauche (LTrim), les espaces de droite (RTrim) ou les deux (Trim).
Définition des règles de comparaison de chaînes :
* Option Compare : Instruction utilisée au niveau module pour déclarer la méthode de comparaison par défaut qu'il convient d'utiliser lors de la comparaison de chaînes.
Utilisation des codes ASCII et ANSI :
* Asc : Renvoie une donnée de type Integer représentant le code de caractère correspondant à la première lettre d'une chaîne.
* Chr : Renvoie une valeur de type String contenant le caractère associé au code de caractère indiqué.
Robin.
Hors ligne
#3 Fri 31 August 2007 09:11
Re: [ArcGis 9.0] supprimer un caractere dans une chaine
Bonjour, j'en profite pour diffuser un code permettant de remplacer un certain nombre de caractères "illisibles" par le véritable caractère correspondant. Le code n'est pas de moi, je l'ai juste adapté. Je recherche la source et je la diffuse aussitôt.
A copier dans la calculatrice an mode "avancé", et remplacer "MonChamp" par le nom du champ correspondant.
Le code remplace les caractères erronés dans var4 par celui précisé dans var1, et ainsi de suite. Pour l'instant il regarde essentiellement les caractères accentués et qq. caractères spéciaux type ° ou ²... A compléter.
----------------------------
Code:
Dim var1, var2, var3 var1 = [MonChamp] var2 = Len(var1) + 1 var3 = 1 While var3 <> var2 Dim var4, var5, var6 var4 = Mid(var1, var3, 1) If var4 = "¯" Then var5 = Mid(var1, 1, var3 - 1) var6 = Mid(var1, var3 + 1, var2 - var3 ) var1 = var5 + "î" + var6 var3 = var3 + 1 ElseIf var4 = "║" Then var5 = Mid(var1, 1, var3 - 1) var6 = Mid(var1, var3 + 1, var2 - var3 ) var1 = var5 + "°" + var6 var3 = var3 + 1 ElseIf var4 = "¶" Then var5 = Mid(var1, 1, var3 - 1) var6 = Mid(var1, var3 + 1, var2 - var3 ) var1 = var5 + "ô" + var6 var3 = var3 + 1 ElseIf var4 = "Ó" Then var5 = Mid(var1, 1, var3 - 1) var6 = Mid(var1, var3 + 1, var2 - var3 ) var1 = var5 + "à" + var6 var3 = var3 + 1 ElseIf var4 = "Ô" Then var5 = Mid(var1, 1, var3 - 1) var6 = Mid(var1, var3 + 1, var2 - var3 ) var1 = var5 + "â" + var6 var3 = var3 + 1 ElseIf var4 = "þ" Then var5 = Mid(var1, 1, var3 - 1) var6 = Mid(var1, var3 + 1, var2 - var3 ) var1 = var5 + "ç" + var6 var3 = var3 + 1 ElseIf var4 = "Þ" Then var5 = Mid(var1, 1, var3 - 1) var6 = Mid(var1, var3 + 1, var2 - var3 ) var1 = var5 + "è" + var6 var3 = var3 + 1 ElseIf var4 = "Ú" Then var5 = Mid(var1, 1, var3 - 1) var6 = Mid(var1, var3 + 1, var2 - var3 ) var1 = var5 + "é" + var6 var3 = var3 + 1 ElseIf var4 = "Û" Then var5 = Mid(var1, 1, var3 - 1) var6 = Mid(var1, var3 + 1, var2 - var3 ) var1 = var5 + "ê" + var6 var3 = var3 + 1 ElseIf var4 = "Ù" Then var5 = Mid(var1, 1, var3 - 1) var6 = Mid(var1, var3 + 1, var2 - var3 ) var1 = var5 + "ë" + var6 var3 = var3 + 1 ElseIf var4 = "╔" Then var5 = Mid(var1, 1, var3 - 1) var6 = Mid(var1, var3 + 1, var2 - var3 ) var1 = var5 + "É" + var6 var3 = var3 + 1 ElseIf var4 = "╚" Then var5 = Mid(var1, 1, var3 - 1) var6 = Mid(var1, var3 + 1, var2 - var3 ) var1 = var5 + "È" + var6 var3 = var3 + 1 ElseIf var4 = "╩" Then var5 = Mid(var1, 1, var3 - 1) var6 = Mid(var1, var3 + 1, var2 - var3 ) var1 = var5 + "Ê" + var6 var3 = var3 + 1 ElseIf var4 = "┬" Then var5 = Mid(var1, 1, var3 - 1) var6 = Mid(var1, var3 + 1, var2 - var3 ) var1 = var5 + "Â" + var6 var3 = var3 + 1 ElseIf var4 = "▓" Then var5 = Mid(var1, 1, var3 - 1) var6 = Mid(var1, var3 + 1, var2 - var3 ) var1 = var5 + "²" + var6 var3 = var3 + 1 ElseIf var4 = "█" Then var5 = Mid(var1, 1, var3 - 1) var6 = Mid(var1, var3 + 1, var2 - var3 ) var1 = var5 + "Û" + var6 var3 = var3 + 1 ElseIf var4 = "░" Then var5 = Mid(var1, 1, var3 - 1) var6 = Mid(var1, var3 + 1, var2 - var3 ) var1 = var5 + "°" + var6 var3 = var3 + 1 Else var3 = var3 + 1 End If Wend
----------------------------------
LIBELLE : var1
----------------------------------
Voilà. @+
Dernière modification par Jean (Fri 31 August 2007 15:06)
Arnaud Colé - responsable service Géomatique et Opendata (SGéO)
Direction des Systèmes d'Information mutualisés et du Numérique
de Grand Chambéry, ville de Chambéry, ville de La Motte-Servolex, ville de La Ravoire
Hors ligne
#6 Wed 25 May 2011 13:59
Re: [ArcGis 9.0] supprimer un caractere dans une chaine
Bonjour
j'ai un trou de mémoire ... je cherche à extraire la partie droite d'une chaine (la fin de mes noms d'opération donc la chaine à droite jusqu'au premier espace) ?
est ce que quelqu'un a ça en tête ?
merci
Hors ligne
#7 Wed 25 May 2011 15:32
Re: [ArcGis 9.0] supprimer un caractere dans une chaine
Trouvé !
je pense que ça doit être possible de faire plus simple mais ça marche
Code:
Dim sOriginal As String Dim sNewString As String Dim c As String Dim l As Long Dim g as Long Dim h as Long '======================= 'change the character you want to use for splitting 'change the original string field name c = " " sOriginal = [LIBELUS] '======================== g= len (sOriginal) l = InStr(sOriginal, c) h=g-l sNewString = Trim(Right(sOriginal, h))
Hors ligne
#8 Thu 26 May 2011 11:11
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [ArcGis 9.0] supprimer un caractere dans une chaine
Salut,
Remplacer le "0" par rien ""
---> http://www.forumsig.org/showthread.php? … ht=routine
A+
Joël
Hors ligne