Hi @Katrin1606 ,
habe mal eine Lösung auf der Basis von RegEx und den SAS-Funktionen scan & count entwickelt. Für die erste beiden Fälle habe ich Lösungen entwickelt die mit beliebig vielen verbundenen "Wörtern" umgehen kann. Für den letzten Fall habe ich bisher noch keine Lösung die mit n Wörtern umgehen kann - solltest du das benötigen sag Bescheid. Zu RegEx in SAS empfehle ich immer das Cheat-Sheet. Der Code ist nicht wirklich kommentiert, ich hoffe er spricht für sich.
data work.aaa(drop=p1 p2 p3 c1 c2 i j l);
length w1 w2 w3 $256.;
* Sonderzeichen;
str2 = "ERF!RSA";
p2 = prxparse('/\W/');
c2 = countw(str2, '', 'P') ;
do j = 1 to c2;
w2 = scan(str2, j, '', 'P');
output;
end;
* camelCase-Worttrennung;
str1 = "PostWichtigeTest";
p1 = prxparse('/[A-Z]/');
c1 = countw(str1, "", 'U');
*w1 = substr(str1, 1, prxmatch(p1, substr(str1, 2)));
do i = 1 to c1;
if i = 1 then l = 1;
w1 = substr(str1, l, prxmatch(p1, substr(str1, l + 1)));
l = l + length(w1);
output;
end;
* Zahlen-Worttrennung;
str3 = "225,00Freitext";
p3 = prxparse('/\d[A-Z]/');
w3 = substr(str3, 1, prxmatch(p3, str3));
output;
w3 = substr(str3, prxmatch(p3, str3) + 1);
output;
run;
Viele Grüße
David
... View more