@ Ответ Пёрли Спенсер, безусловно, предпочтительнее, но любой программист должен иметь дело со следующим наивным циклом. Посмотрите на каждого персонажа по очереди и решите, является ли он буквой; или число или десятичная точка; или что-то еще (неявно) и строить ответы таким образом. Обратите внимание, что, хотя мы зацикливаемся на длине строки, зацикливание на наблюдениях тоже является молчаливым.
clear
input str42 whatever
"KZ1,345,769.1"
"PKS948,123.9"
"XG829,823.5"
"324JKL,282.7"
"456MJB87,006.01"
end
compress
local length = substr("`: type whatever'", 4, .)
gen letters = ""
gen numbers = ""
quietly forval j = 1/`length' {
local arg substr(whatever,`j', 1)
replace letters = letters + `arg' if inrange(`arg', "A", "Z")
replace numbers = numbers + `arg' if `arg' == "." | inrange(`arg', "0", "9")
}
list
+-----------------------------------------+
| whatever letters numbers |
|-----------------------------------------|
1. | KZ1,345,769.1 KZ 1345769.1 |
2. | PKS948,123.9 PKS 948123.9 |
3. | XG829,823.5 XG 829823.5 |
4. | 324JKL,282.7 JKL 324282.7 |
5. | 456MJB87,006.01 MJB 45687006.01 |
+-----------------------------------------+