Veröffentlicht am :
Macro CREATION_INTERNE

Extraktion eines Teilstrings nach einem Zielzeichen

Dieser Code ist auch verfügbar auf: English Español Français
Das Makro `%allafterc` ist ein funktionsähnliches Makro, das den Teil einer Zeichenkette zurückgibt, der dem ersten Vorkommen eines der in einer Zielzeichenkette angegebenen Zeichen folgt. Die Suche ist Groß-/Kleinschreibung-sensitiv. Wenn keines der Zielzeichen gefunden wird, wird eine Nullzeichenkette zurückgegeben. Es verwendet die SAS©-Funktion `indexc`, um die Position des Zeichens zu lokalisieren. Dieses Makro ist für die Ausführung auf SAS© Viya 4 konzipiert.
Parameter:
* `string`: (positional) Die Zeichenkette, in der gesucht werden soll.
* `target`: (positional) Ein oder mehrere Zielzeichen, nach denen gesucht werden soll (Groß-/Kleinschreibung-sensitiv).
Anwendungsbeispiel:
`%let rest=%allafterc(&str,\/);`
Datenanalyse

Type : CREATION_INTERNE


Die von dem Makro verarbeiteten Daten (die Hauptzeichenkette und die Zielzeichenkette) werden direkt als Eingabeparameter an das Makro übergeben. Es werden keine Daten aus externen Dateien, Datenbanken oder SASHELP-Bibliotheken gelesen.

1 Codeblock
MACRO allafterc
Erklärung :
Dieser Block definiert das Makro `%allafterc`. Es initialisiert eine lokale Variable `pos`. Es verwendet die SAS-Funktion `indexc` über `%sysfunc`, um die Position des ersten Zeichens von `target` in `string` zu finden. Wenn ein Zeichen gefunden wird (d.h. wenn `indexc` nicht 0 zurückgibt), wird die Position in `pos` gespeichert. Anschließend prüft ein weiteres `%if`, ob diese Position nicht das Ende der Zeichenkette ist. Falls nicht, extrahiert und gibt es den Teilstring von `string` zurück, der ein Zeichen nach der gefundenen Position beginnt, wobei `%qsubstr` zur Handhabung von Sonderzeichen verwendet wird. Wenn kein Zielzeichen gefunden wird oder das Zielzeichen das letzte der Zeichenkette ist, wird kein Wert zurückgegeben (implizit eine leere Zeichenkette im Kontext eines funktionsfähigen Makros).
Kopiert!
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;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : 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.