Publié le :
Macro CREATION_INTERNE

Extraction de sous-chaîne après caractère cible

Ce code est également disponible en : Deutsch English Español
La macro `%allafterc` est une macro de style fonction qui renvoie la partie d'une chaîne de caractères qui suit la première occurrence de l'un des caractères spécifiés dans une chaîne cible. La recherche est sensible à la casse. Si aucun des caractères cibles n'est trouvé, une chaîne nulle est renvoyée. Elle utilise la fonction SAS© `indexc` pour localiser la position du caractère. Cette macro est conçue pour être exécutable sur SAS© Viya 4.
Paramètres:
* `string`: (positionnel) La chaîne de caractères dans laquelle rechercher.
* `target`: (positionnel) Un ou plusieurs caractères cibles à rechercher (sensible à la casse).
Exemple d'utilisation:
`%let rest=%allafterc(&str,\/);`
Analyse des données

Type : CREATION_INTERNE


Les données traitées par la macro (la chaîne principale et la chaîne cible) sont fournies directement en tant que paramètres d'entrée à la macro. Aucune lecture de données depuis des fichiers externes, des bases de données ou des bibliothèques SASHELP n'est effectuée.

1 Bloc de code
MACRO allafterc
Explication :
Ce bloc définit la macro `%allafterc`. Elle initialise une variable locale `pos`. Elle utilise la fonction SAS `indexc` via `%sysfunc` pour trouver la position du premier caractère de `target` dans `string`. Si un caractère est trouvé (c'est-à-dire si `indexc` ne renvoie pas 0), la position est stockée dans `pos`. Ensuite, un autre `%if` vérifie si cette position n'est pas la fin de la chaîne. Si ce n'est pas le cas, elle extrait et renvoie la sous-chaîne de `string` commençant un caractère après la position trouvée, en utilisant `%qsubstr` pour gérer les caractères spéciaux. Si aucun caractère cible n'est trouvé ou si le caractère cible est le dernier de la chaîne, aucune valeur n'est renvoyée (implicitement une chaîne vide dans le contexte d'une macro fonctionnelle).
Copié !
1 %local pos;
2 %IF %sysfunc(indexc(&string,&target)) %THEN %DO;
3 %let pos=%sysfunc(indexc(&string,&target));
4 %IF &pos LT %LENGTH(&string) %THEN %qsubstr(&string,&pos+1);
5 %END;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : This is public domain software. No guarantee as to suitability or accuracy is given or implied. User uses this code entirely at their own risk.