#kdb
Вопрос:
Я недавно начал изучать язык программирования q, и мне это немного сложно, так как я исхожу из «традиционного» императива, ООП и т. Д. Языковой фон. Я пытаюсь выполнить, казалось бы, простую задачу — найти строки в списке, содержащие определенный символ:
names:("Saint Denis";"Rhodes";"Strawberry";"Valentine")
Как напечатать все строки, содержащие букву «R»? Еще лучше, как «Р», так и «р»?
Самое большее, что мне удалось сделать, это:
{[x]x?"o"} each names
Каков был бы правильный подход?
Заранее спасибо!
Ответ №1:
Вы можете использовать like
ключевое слово с регулярным выражением, например:
q)names where names like "*[Rr]*"
"Rhodes"
"Strawberry"
Ответ №2:
Вы могли бы использовать что-то вроде приведенного ниже
q)names where "R" in/: names
"Rhodes"
q)names where any each "rR" in/: names
"Rhodes"
"Strawberry"
Ответ №3:
Еще пара альтернатив таковы:
q)names where "r" in'lower names
"Rhodes"
"Strawberry"
q)names where any"Rr"in':names
"Rhodes"
"Strawberry"