programmeur pro sas fonction enlever blanc / espace

1. Enlever les blancs aux extrémités avec la fonction strip

La fonction strip enlève les blancs aux extrémités d’un texte ce qui évite d’utiliser deux fonctions trim(left()) pour faire le même travail.

Lorsque vous accolez plusieurs morceaux de texte (faire une concaténation), pensez aux fonctions cats, catt et catx. Pour plus de précisions, vous pouvez vous reporter  à la section sur la concaténation.

Dans l’exemple suivant, le blanc avant Hello et le blanc après Boo sont enlevés.

data one;
   length before after1a after1b $25;
   before  = ' Hello  My Name is Boo ';
   after1a = strip(before);
   after1b = 'Hello My Name is Boo';
run;

2. Garder un seul blanc entre les mots avec la fonction compl

Le plus souvent nous n’avons besoin que d’un seul espace entre les mots de notre texte. Pour enlevez les doublons, utilisez la fonction compbl.

Dans l’exemple suivant un des deux blancs est enlevé entre le mot Hello et le mot My.

data one;
   length before after1a after1b $25;
   before  = 'Hello  My Name is Boo';
   after1a = compbl(before);
   after1b = 'Hello My Name is Boo';
run;

3. Enlever tous les blancs avec la fonction compress

Par défaut, la fonction compress enlève tous les blancs de votre texte. Ajoutez la liste des caractères à enlever dans un second paramètre, la fonction se chargera de les enlever.

Dans l’exemple ci-dessous, la fonction compress est utilisée deux fois. La première fois tous les blancs sont enlevés. Le seconde fois, tous les blancs ainsi que les lettres l et o sont enlevés.

data one;
   length before after1a after1b after2a after2b $25;
   before  = 'Hello My Name is Boo';
   after1a = compress(before);
   after1b = 'HelloMyNameisBoo';
   after2a = compress(before,' lo');
   after2b = 'HeMyNameisB';
run;

Enfin, depuis au moins la version 9.2 de SAS®, un paramètre supplémentaire est disponible. Il s’appelle le modifier. Celui-ci ne s’applique pas aux blancs.

  • k = garder au lieu de supprimer (exception pour les blancs)
  • i = garder ou supprimer indifféremment les majuscules ou les minuscules
  • a = ajouter les lettres de l’alphabet à la liste des caractères
  • d = ajouter les chiffres à la liste des caractères
  • n = ajouter les chiffres, le tiret bas et les lettres de l’alphabet anglais à la liste des caractères
  • p = ajouter les marques de ponctuation  à la liste des caractères
  • s = ajouter les blancs (y compris les caractères non imprimables comme le carriage return, horizontale tab, verticale tab, line feed et form feed) à la liste des caractères

Dans cet autre exemple, la fonction compress est utilisée deux fois. Dans le premier cas,  la lettre k indique qu’il faut garder (keep) les lettres o au lieu de les supprimer. Dans le second cas, la lettre k indique qu’il faut garder les m et la lettre i indique que cette lettre m est à garder qu’elle soit en minuscule ou en majuscule.

data one;
   length before after3a after3b $25;
   before  = 'Hello My Name is Boo';
   after3a = compress(before,'o',k);
   after3b = 'oBoo';
   after4a = compress(before,'m',ki);
   after4b = 'Mm';
run;

4. Eviter un blanc après avoir enlever un caractère avec les fonctions transtrn et trimn

De nombreux programmeurs utilisent les fonctions tranwrd et translate pour changer une suite de caractères ou certains caractères en particulier. Par contre, que se passe t-il quand on ne veut pas remplacer ABC en A1C mais qu’on veut enlever le B ? Et bien avec les fonctions tranwrd et translate laisseront un blanc. ABC deviendra A C. Pour enlever le blanc, voici comment faire :

data _null_;
   length x y $3;
   x='ABC';
   y=transtrn(x,'B',trimn(''));
   put x=;
   put y=;
run;

La fonction trimn à la différence de la fonction trim sait gérer les longueurs de zéro. La fonction transtrn autorise également à avoir une longueur de zéro dans son troisième paramètre.

Regardez votre log pour voir le résultat.

5. Supprimer les x premiers blancs avec rxparse et call rxchange

Dans un premier temps, définissez la valeur d’avant et la valeur d’après dans une variable  via la fonction rxparse. Dans l’exemple, les blancs (avant) sont remplacés par rien (après).

Dans un second temps, définissez les trois voir quatre paramètres de call rxchange :

  1. Le nom de la variable contenant le résultat de la fonction rxparse
  2. Le nombre de caractères à actualiser. Vous pouvez pour cela utiliser la fonction lengthn ou la fonction lengthc. Les deux fonctions peuvent gérer une longueur de zéro. La fonction lengthn inclus les blancs de fin alors que lengthc ne les inclus pas dans le calcul du nombre de caractères.
  3. Le nom de la variable à actualiser.
  4. Par défaut, la variable d’origine est actualisée. Pour créer une nouvelle variable, ajoutez un quatrième paramètre. Pensez à définir la longueur de cette nouvelle variable.
data one;
   length after1a after1b $30;
   before  = ' ZZZ ABCD AB ';
   rx=rxparse("' ' to ");
   call rxchange (rx,lengthc(before),before,after1a);
   after1b ='ZZZABCDAB';
run;
This entry was posted in call rxchange, compbl, compress, Fonctions caractères, left, length, lengthc, lengthn, Regular Expression, rxparse, strip, transtrn, trim, trimn and tagged , , , , , , , , , , , , , , , , , , , . Bookmark the permalink.

One Reply to “5 fonctions pour enlever les blancs”

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


*