Для меня работает следующее:
local friends "cory michael jason.gabrielle fred.keaton hector jean.thea charles"
forvalues i = 1 / `=wordcount("`friends'")' {
tokenize `friends'
if !strmatch("``i''", "*.*") {
local old `old' ``i''
}
else {
tokenize ``i'', parse(".")
local old `old' `3'
local new `new' `1'
}
}
Этот цикл forvalues
разбивает имена на части, а затем проходит по каждому имени в списке, чтобы проверить, присутствует ли полная остановка.Если есть совпадение, то это имя сохраняется в локальном макросе old
.
В противном случае составное имя снова разделяется, и первый фрагмент отправляется в локальный макрос new
, а третий фрагмент сохраняется в локальном макросе old
.Обратите внимание, что второй фрагмент - это сам полный останов.
При запуске цикла результаты накапливаются следующим образом:
. display "`old'"
cory michael gabrielle keaton hector thea charles
. display "`new'"
jason fred jean