Posts Tagged ‘TRIMN’

h1

4 fonctions pour enlever les blancs !

janvier 29, 2008

1. Enlever les blancs aux extrémités

Comprendre les anciens programmes et les fonctions TRIM et LEFT : jusqu’à la version SAS 8.2, pour enlever les blancs en début de la chaîne de caractères (leading blank), on les déplaçait à la fin de la chaîne (trailing blank) via LEFT, puis on les enlevait avec TRIM. Cela avait plusieurs inconvénients :

  • Il fallait utiliser deux fonctions TRIM et LEFT ;
  • Il ne fallait pas inverser l’ordre de ces deux fonctions, faute de quoi on arrivait à un résultat différent de ses attentes ;
  • Quand on appliquait cette méthode sur une chaîne de caractère vide, on se retrouvait avec une longueur de 1 au lieu de 0 ; la fonction TRIMN, qui résout ce dernier point, n’est venue qu’après, avec SAS V9.

Savoir utiliser les dernières avancées de SAS, la fonction STRIP : depuis SAS 9.1.3, la fonction STRIP résout les trois problèmes. C’est équivalent à TRIMN(LEFT()).

Si vous enlevez les blancs pour pouvoir faire une concaténation, pensez aux fonctions CATS, CATT et CATX. Pour plus de précisions, vous pouvez vous reporter à l’article « La concaténation : 4 fonctions SAS 9« .

2. Garder un seul blanc entre les mots. Vive la fonction COMPBL : il vous faudra en général un seul espace entre les mots de votre texte. Enlevez alors les doublons via la fonction COMPBL. Vous enlèverez ainsi tous les blancs en fin de chaîne sauf un.

3. Enlever tous les blancs. Vive la fonction COMPRESS : par défaut, la fonction COMPRESS enlève tous les blancs de votre texte. Ajoutez un deuxième paramètre et elle pourra vous enlever d’autres types de caractères. Mais cela dépasse le sujet d’aujourd’hui.

4. Supprimer les x premiers blancs avec RXPARSE et CALL RXCHANGE : la notation qui suit permet de remplacer n’importe quel type de texte par un autre. Ici nous nous limitons aux blancs. Dans un premier temps, définissez la valeur d’avant et la valeur d’après dans RXPARSE. Puis, dans un second temps, définissez les trois voir quatre paramètres de CALL RXCHANGE, à savoir :

  • rappelez cette définition,
  • précisez la variable à actualiser et
  • donner le nombre de fois qu’un changement doit avoir lieu.
  • par défaut, la variable d’origine sera actualisée. Pour créer une nouvelle variable, ajoutez un quatrième paramètre à CALL RXCHANGE ; la longueur de votre nouvelle variable sera de 200 à moins de l’avoir définie autrement auparavant ;

Truc : il ne peut pas y avoir plus de changement que de caractères dans la chaîne. Alors pourquoi ne pas prendre cette longueur pour remplacer tous les blancs. La fonction LENGTHN inclura les blancs en fin de texte et pourra gérer les chaînes de longueur 0.

Un exemple : voici un exemple d’une variable y de longueur 30 qui est créée à partir de la variable x à laquelle on a enlevé ses six blancs.

data one;
   length y $30;
   x= ' ZZZ ABCD AB ' ;
   rx=rxparse(" ' ' to ");
   call rxchange (rx,lengthc(x),x,y);
run;