Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1844 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Batch] [Résolu]Analyse d'une chaine de caractères + redimensionnement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Batch] [Résolu]Analyse d'une chaine de caractères + redimensionnement

n°1571231
YokYok1
Posté le 06-06-2007 à 20:25:56  profilanswer
 

Bonjour à tous!!! Merci de m'accueillir sur votre forum
 
Comme beaucoup de personnes dans ce bas monde, je viens faire un petit appel à l'aide.... Voici mon problème :
 
En entrée -> des données de la forme suivante

Code :
  1. 00000012345.09000000
  2. 00000078.123698000000
  3. ...etc...


soit une liste de x nombres décimaux tous aléatoirement constitués avec quoi qu'il arrive 6 zéros au début et 6 zéros à la fin
 
Voici maintenant ce que j'essaie d'obtenir en sortie -> [6 caractères du coté gauche de la virgule].[6 caractères du coté droit de la virgule]
 
Il faut donc que je parvienne à supprimer les zeros en trop de chaque coté de la virgule pour ne garder que les données "utiles"
 
Cela fait un bout de temps que je suis dessus et je sais que je brûle... Voici ce que j'ai fait jusqu'à maintenant

Code :
  1. FOR /F "tokens=1,2 delims=." %%a IN ("%tx%" ) do (
  2. set gch=%%a
  3. set drt=%%b


Avec cela, je parviens (assez facilement vous me direz) à isoler chaque "membre" de mon nombre décimal
 
Pour la suite, je pense qu'il me faut tester la nature des données avec une commande du style (en pseudo-algo):

Code :
  1. Si "%gch%:~x,x"=="quelque chose" alors set gch=ce qu'il me faut garder avec :~x,x
  2. echo %gch%


Le tout en boucle... et faire pareil pour les membres droits de ma valeur...
 
Le problème c'est que je n'arrive pas à trouver le type de test à faire... Je débute et je n'ai pas encore assimilé toute la mesure de ce que langage BATCH peut faire dans ce domaine. La seule chose que je sais c'est que je dois le faire avec CE langage (qui, je sais n'est pas forcément le plus adapté à ce genre d'opérations)
 
Auriez-vous des conseils d'approche à me proposer?
 
Merci d'avance pour votre aide


Message édité par YokYok1 le 07-06-2007 à 12:00:47
mood
Publicité
Posté le 06-06-2007 à 20:25:56  profilanswer
 

n°1571287
wackevat
Posté le 07-06-2007 à 04:07:29  profilanswer
 

Tu peux deja commencer par regarder l'aide de la commande set.
 
set /?
 
Pour le cote gauche, ce sera tres simple.
 
Par contre la partie de droite, si elle commence par des 0, faut etre prudent(e).

n°1571337
YokYok1
Posté le 07-06-2007 à 10:15:06  profilanswer
 

Pour information, j'ai un complément à poster :
 
La chaine en question doit faire au maximum 13 caractères mais la virgule peut être positionnée à n'importe quel endroit.
 
Il faut daonc que je creuse un peut plus...
 
Si vous avez des remarques... Merci d'avance
 
Je vous tiens au courant

n°1571459
YokYok1
Posté le 07-06-2007 à 12:00:11  profilanswer
 

Je crois que j'ai trouvé!!!
 
Grosso modo : Si à une position X il ya quelque chose et qu'après il n'y a rien -> la donnée fait X caractères et je peux rajouter un nb de zeros en conséquence.
 
C'est à optimiser mais bon...
 

Code :
  1. rem Formatage du taux
  2. rem taux = 1 caractère
  3. if not "%tx:~0,1%"=="" (
  4. if "%tx:~1,1%"=="" (
  5.  set tx=000000000000%tx%
  6. )
  7. )
  8. rem taux = 2 caractères
  9. if not "%tx:~0,2%"=="" (
  10. if "%tx:~2,1%"=="" (
  11.  set tx=0000000000%tx%
  12. )
  13. )
  14. rem taux = 3 caractères
  15. if not "%tx:~0,3%"=="" (
  16. if "%tx:~3,1%"=="" (
  17.  set tx=000000000%tx%
  18. )
  19. )
  20. rem taux = 4 caractères
  21. if not "%tx:~0,4%"=="" (
  22. if "%tx:~4,1%"=="" (
  23.  set tx=00000000%tx%
  24. )
  25. )
  26. rem taux = 5 caractères
  27. if not "%tx:~0,5%"=="" (
  28. if "%tx:~5,1%"=="" (
  29.  set tx=00000000%tx%
  30. )
  31. )
  32. rem taux = 6 caractères
  33. if not "%tx:~0,6%"=="" (
  34. if "%tx:~6,1%"=="" (
  35.  set tx=0000000%tx%
  36. )
  37. )
  38. rem taux = 7 caractères
  39. if not "%tx:~0,7%"=="" (
  40. if "%tx:~7,1%"=="" (
  41.  set tx=000000%tx%
  42. )
  43. )
  44. rem taux = 8 caractères
  45. if not "%tx:~0,8%"=="" (
  46. if "%tx:~8,1%"=="" (
  47.  set tx=00000%tx%
  48. )
  49. )
  50. rem taux = 9 caractères
  51. if not "%tx:~0,9%"=="" (
  52. if "%tx:~9,1%"=="" (
  53.  set tx=0000%tx%
  54. )
  55. )
  56. rem taux = 10 caractères
  57. if not "%tx:~0,10%"=="" (
  58. if "%tx:~10,1%"=="" (
  59.  set tx=000%tx%
  60. )
  61. )
  62. rem taux = 11 caractères
  63. if not "%tx:~0,11%"=="" (
  64. if "%tx:~11,1%"=="" (
  65.  set tx=00%tx%
  66. )
  67. )
  68. rem taux = 12 caractères
  69. if not "%tx:~0,12%"=="" (
  70. if "%tx:~12,1%"=="" (
  71.  set tx=0%tx%
  72. )
  73. )
  74. rem taux = 13 caractères -> Rien à faire


 
Merci à tous et à ce post : http://forum.hardware.fr/hfr/Progr [...] 0947_1.htm

n°1571461
webding
Posté le 07-06-2007 à 12:02:43  profilanswer
 

Salut, ce que tu veut faure c'est supprimer les 6 zéro ?
Si oui c'est comme ca:

Code :
  1. Set VrTest=00000012345.09000000
  2. Set VrTest=%VrTest:=000000%


Message édité par webding le 07-06-2007 à 12:02:54
n°1571551
aigles
Posté le 07-06-2007 à 14:37:42  profilanswer
 

A essayer :

set tx=00000078.123698000000
FOR /F "tokens=1,2 delims=." %%a IN ("000000%tx%000000" ) do (
   set gch=%%a%
   set drt=%%b%
)
set gch=%gch:~-6%
set drt=%drt:~0,6%
 
echo %tx% = %gch% + %drt%


 
Jean-Pierre.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Batch] [Résolu]Analyse d'une chaine de caractères + redimensionnement

 

Sujets relatifs
[Résolu] eclipse exporter option -Xmx500mmodifier une chaine de caractere
[Resolu] taille de base de données oracle(RESOLU) diminution du temps d'execution [VBA EXCEL]
[RÉSOLU] requête MySQL select prochains évènements[résolu] Problème d'include chez Free mais pas en local
modifier une chaine dans des macros[VBA] [Résolu] Partager des variables entre plusieurs userform
[RESOLU] PHP Modification[RESOLU]/[ACCESS]disparition de liste déroulantes sur formulaires
Plus de sujets relatifs à : [Batch] [Résolu]Analyse d'une chaine de caractères + redimensionnement


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR