Вам нужно выполнить более одного прохода, чтобы получить желаемый результат.
Например, если умляуты в ваших данных всегда располагаются после имени и вы заранее знаете, что это такое, вы можете сделать следующее:
clear
input str50 stringvar
"JEAN S ACUTE OVER E BASTIEN"
"JERARD DE ALOHA HEY P ARTIER"
"Etienne SOMETHING ANSEL"
end
replace stringvar = subinstr(strtrim(stringvar), " ", ";", 1)
replace stringvar = subinstr(stringvar, " ", "", .)
foreach x in "ACUTEOVER" "ALOHAHEY" "SOMETHING" {
replace stringvar = subinstr(stringvar, "`x'", "", .)
}
replace stringvar = subinstr(stringvar, ";", " ", 1)
list
+------------------+
| stringvar |
|------------------|
1. | JEAN SEBASTIEN |
2. | JERARD DEPARTIER |
3. | Etienne ANSEL |
+------------------+
Обратите внимание, что имена, используемые в этом ответе, являются вымышленными французскими!