[R] Virer les espaces d'une chaîne string formant un nomb
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Virer les espaces d'une chaîne string formant un nomb
Bonjour à tous,
Je sais que le sujet a été traité mais je n'arrive pas à trouver ma solution.
En lisant un control (via ControlGetText) je récupère un nombre sous forme de texte.
Etant donné que mon but est d'utiliser ce texte (convertit en nombre) dans un calcul, j'ai essayé pas mal de choses pour virere les espaces mais rien de marche.
Le texte lu est de la forme "7 853 251,6"
Les fonctions suivantes me renvoient les résultats suivants:
StringRegExpReplace ($Hauteur, " ", "") ==> "7 853 251,6"
StringReplace($Hauteur, " ", "") ==> "7 853 251,6"
StringStripWS($Hauteur, 8 ) ==> "7 853 251,6"
Du coup, les fonctions de conversion me renvoient les résultats suivants:
Eval(le résultat) ==> 7
Number(le résultat) ==> 7
Rien à faire, je n'arrive pas à enlever les espaces.
Vous avez un tuyau? Je bloque et j'ai l'impression d'avoir épuisé toutes les fonctions susceptibles de faire ça...
Je sais que le sujet a été traité mais je n'arrive pas à trouver ma solution.
En lisant un control (via ControlGetText) je récupère un nombre sous forme de texte.
Etant donné que mon but est d'utiliser ce texte (convertit en nombre) dans un calcul, j'ai essayé pas mal de choses pour virere les espaces mais rien de marche.
Le texte lu est de la forme "7 853 251,6"
Les fonctions suivantes me renvoient les résultats suivants:
StringRegExpReplace ($Hauteur, " ", "") ==> "7 853 251,6"
StringReplace($Hauteur, " ", "") ==> "7 853 251,6"
StringStripWS($Hauteur, 8 ) ==> "7 853 251,6"
Du coup, les fonctions de conversion me renvoient les résultats suivants:
Eval(le résultat) ==> 7
Number(le résultat) ==> 7
Rien à faire, je n'arrive pas à enlever les espaces.
Vous avez un tuyau? Je bloque et j'ai l'impression d'avoir épuisé toutes les fonctions susceptibles de faire ça...
Modifié en dernier par MissTi le lun. 14 avr. 2008 14:20, modifié 2 fois.
-
- Niveau 7
- Messages : 318
- Enregistré le : ven. 15 févr. 2008 12:25
- Localisation : Paris
- Status : Hors ligne
Re: Virer les espaces d'une chaîne string formant un nomb
C'est étrange que les fonctions StringRegExpReplace, StringReplace et StringStripWS ne retournent pas le bon nombre
: je les ai testées toutes les 3 avec le texte "7 853 251,6" et les espaces étaient partis.
Peut-être y-a-t-il un problème de variable mal nommée ???
Un petit bout de code permettrait peut-être de mieux voir le problème...

Peut-être y-a-t-il un problème de variable mal nommée ???
Un petit bout de code permettrait peut-être de mieux voir le problème...
-
- Niveau 11
- Messages : 1826
- Enregistré le : lun. 23 juil. 2007 12:31
- Localisation : Bureau
- Status : Hors ligne
Re: [..] Virer les espaces d'une chaîne string formant un nomb
Pour les fonctions que vous citez, je vous invites à faire une petite recherche sur le forum, vous y trouveriez divers exemple, merci au auteurs.
Je te propose une petite fonction, voici un exemple d'utilisation avec StringReplace, que tu pourrais ajouter facilement à ta fonction.
sortie = 7853251,6
bon codage
@Missti
les autres post sont ils résolu ?
Si c'est le cas,'noublie pas d'éditer le titre par un [R], merci
Je te propose une petite fonction, voici un exemple d'utilisation avec StringReplace, que tu pourrais ajouter facilement à ta fonction.
Code : Tout sélectionner
ConsoleWrite(DelEspace("7 8 5 3 251,6"))
Func DelEspace($iNumber)
If StringInStr($iNumber," ") Then
$iNumber = StringReplace($iNumber," ","")
EndIf
Return $iNumber
EndFunc
bon codage

@Missti
les autres post sont ils résolu ?
Si c'est le cas,'noublie pas d'éditer le titre par un [R], merci

Re: [..] Virer les espaces d'une chaîne string formant un nomb
merci pour ton conseil Ani mais cette fonction StringReplace marche bien. Sauf avec le texte que je récupère.
Voici mon code:
J'ai l'impression que c'est la valeur qu'il lit dans la fenêtre Statistiques qui ne va pas.
Je vous joint des images de la fenêtre en question et du résultat de l'utilisation de StringReplace.
Voici mon code:
Code : Tout sélectionner
WinActivate("MapInfo Professional","")
WinWaitActive("MapInfo Professional","")
WinMenuSelectItem("MapInfo Professional","","&Sélection","St&atistiques...")
WinWait("Calculer Statistiques","&Table:")
$n = ($i * 3)
Send("{Down "& $n & "}")
ControlClick("Calculer Statistiques","&Table:","Button1")
WinWait("Statistiques","Minimum:")
$SumHauteur = ControlGetText("Statistiques","Minimum:", "Static17")
ControlClick("Statistiques","Minimum:","Button1")
$temp =StringReplace ($SumHauteur, " ", "")
msgbox(0, "vérif hauteur", "$SumHauteur (valeur lue): " & $SumHauteur & @crlf & _
"$temp = StringReplace ($SumHauteur, " & chr(34) & " "& chr(34) & " , "& chr(34) & chr(34) &") ==> " & $temp & @crlf & _
"number($temp) ==> " & number($temp) & @crlf )
Je vous joint des images de la fenêtre en question et du résultat de l'utilisation de StringReplace.
- Fichiers joints
-
- Voici la fenêtre dans laquelle je lis ma valeur (ligne "Somme:").
- valeur_lue.jpg (13.42 Kio) Vu 3426 fois
-
- Le résultat reste le même quand j'utilise les fonctions StringRegExpReplace, StringReplace ou StringStripWS.
- msgboxFinal.jpg (9.49 Kio) Vu 3427 fois
-
- Niveau 11
- Messages : 1826
- Enregistré le : lun. 23 juil. 2007 12:31
- Localisation : Bureau
- Status : Hors ligne
Re: [..] Virer les espaces d'une chaîne string formant un nomb
tu utilise mal la fonction et je parie que tu n'a pas regardé non plus l'aide sur stringreplace ?
Nous renvoie = 7598463
Pour les modification y a juste ceux-ci: ou comme l'exemple plus haut en y indiquant directement number ?
$temp = 7598463,44
Paramètre
1. String = $SumHauteur
2. Recherche = "chr(32) = a l'espacement"
3. Remplacer la recherche par = rien = ""
4. Options :: Par défault sa valeur est égal à 0 (voir aide)
5. Options :: le 1 = case sensitive (tant qu'il y en a)
Code : Tout sélectionner
consolewrite(number(StringReplace("7 598 463,44",chr(32),"","",1)))
Pour les modification y a juste ceux-ci: ou comme l'exemple plus haut en y indiquant directement number ?
Code : Tout sélectionner
$temp =StringReplace ($SumHauteur, chr(32), "", "", 1)
Paramètre
1. String = $SumHauteur
2. Recherche = "chr(32) = a l'espacement"
3. Remplacer la recherche par = rien = ""
4. Options :: Par défault sa valeur est égal à 0 (voir aide)
5. Options :: le 1 = case sensitive (tant qu'il y en a)
[R] Virer les espaces d'une chaîne string formant un nomb
J'ai fini par trouver en épluchant caractère par caractère et en les convertissant avec la fonction Asc(). L'espace correspondait au code ascii 160 et non 32.
Et en effet, en remplaçant la virgule par un point, je récupère aussi le chiffre après la virgule.
C'est résolu.
Et en effet, en remplaçant la virgule par un point, je récupère aussi le chiffre après la virgule.
C'est résolu.
-
- Niveau 11
- Messages : 1826
- Enregistré le : lun. 23 juil. 2007 12:31
- Localisation : Bureau
- Status : Hors ligne
Re: [..] Virer les espaces d'une chaîne string formant un nomb
ok 
la valeur dans chaque fonction est identique c'est l'espacement
les trois sont juste asc(160) chr(32) hex(20)
en mode clavier = alt+0160
...
faut pas mélanger l'asc/chr/hex
normalement dans l'aide doit y avoir le tableau des caractère ascii
si les post sont résolu, il te faudra modifier le titre au lieu de [..] indique [R]
mmerci

la valeur dans chaque fonction est identique c'est l'espacement
les trois sont juste asc(160) chr(32) hex(20)
en mode clavier = alt+0160
...
faut pas mélanger l'asc/chr/hex
normalement dans l'aide doit y avoir le tableau des caractère ascii
si les post sont résolu, il te faudra modifier le titre au lieu de [..] indique [R]
mmerci
Re: [R] Virer les espaces d'une chaîne string formant un nomb
si je peux rajouter mon grain de sable, alt+0160 est different de alt+032, le premier est un espace insécable, le second un espace classique
Re: [R] Virer les espaces d'une chaîne string formant un nomb
Je me suis doutée qu'il y avais plusieurs types d'espace.
(bien bonne la blagouze arrkhan...
)
(bien bonne la blagouze arrkhan...
