Publicado el :
Macro CREATION_INTERNE

Extracción de subcadena después del carácter objetivo

Este código también está disponible en: Deutsch English Français
La macro `%allafterc` es una macro de estilo función que devuelve la parte de una cadena de caracteres que sigue a la primera ocurrencia de uno de los caracteres especificados en una cadena objetivo. La búsqueda distingue entre mayúsculas y minúsculas. Si no se encuentra ninguno de los caracteres objetivo, se devuelve una cadena nula. Utiliza la función SAS© `indexc` para localizar la posición del carácter. Esta macro está diseñada para ser ejecutable en SAS© Viya 4.
Parámetros:
* `string`: (posicional) La cadena de caracteres en la que buscar.
* `target`: (posicional) Uno o más caracteres objetivo a buscar (distingue entre mayúsculas y minúsculas).
Ejemplo de uso:
`%let rest=%allafterc(&str,\/);`
Análisis de datos

Type : CREATION_INTERNE


Los datos procesados por la macro (la cadena principal y la cadena objetivo) se proporcionan directamente como parámetros de entrada a la macro. No se realiza ninguna lectura de datos desde archivos externos, bases de datos o bibliotecas SASHELP.

1 Bloque de código
MACRO allafterc
Explicación :
Este bloque define la macro `%allafterc`. Inicializa una variable local `pos`. Utiliza la función SAS `indexc` a través de `%sysfunc` para encontrar la posición del primer carácter de `target` en `string`. Si se encuentra un carácter (es decir, si `indexc` no devuelve 0), la posición se almacena en `pos`. Luego, otro `%if` verifica si esta posición no es el final de la cadena. Si no lo es, extrae y devuelve la subcadena de `string` comenzando un carácter después de la posición encontrada, utilizando `%qsubstr` para manejar caracteres especiales. Si no se encuentra ningún carácter objetivo o si el carácter objetivo es el último de la cadena, no se devuelve ningún valor (implícitamente una cadena vacía en el contexto de una macro funcional).
¡Copiado!
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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información 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.