Разделить список друзей на два отдельных - PullRequest
1 голос
/ 07 июня 2019

У меня есть следующий список друзей:

cory 
michael 
jason.gabrielle 
fred.keaton 
hector 
jean.thea 
charles

Я хотел бы разделить этот список на старых и новых друзей.

Новые друзья должны включать все имена до полной остановки истарые друзья все остальные.

Например:

cory 
michael 
gabrielle 
keaton 
hector 
thea 
charles

и

jason 
fred 
jean

1 Ответ

1 голос
/ 07 июня 2019

Для меня работает следующее:

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
...