Как узнать, начинается ли строка с одного из нескольких параметров в Clojure - PullRequest
0 голосов
/ 17 ноября 2018

Я хочу узнать, начинается ли строка с одного из нескольких вариантов. Например, я хочу знать, начинается ли строка с какого-либо гласного («a» или «e» или «i» или «u»).

Я считаю, что должен использовать starts-with? Clojure, но я не знаю, куда идти дальше. Я пытался использовать регулярное выражение, но не смог сделать это правильно. Я также пытался использовать (or "a" "e" "i" "o" "u"), но это тоже было не так.


РЕДАКТИРОВАТЬ: после дополнительных экспериментов кажется, что
(re-matches #"^[aeiou].*" string)
работает, но я не знаю, лучший ли это способ сделать

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Чтобы использовать starts-with?, вам нужно будет перебрать список гласных.Я бы использовал some, чтобы помочь с этим, так как вы просто заботитесь, если в начале строки содержится некоторый гласный:

(some #(s/starts-with? "hello" (str %)) "aeiou")
=> nil

(some #(s/starts-with? "apple" (str %)) "aeiou")
=> true

Честно говоря, я бы просто сделалто, что @Michiel уже предложил и сделать поиск набора, хотя я бы сделал это немного по-другому:

(-> "apple"
    (first) ; Is the first letter
    #{\a \e \i \o \u}) ; In the set of vowels?
=> \a ; Truthy!

(-> "hello"
    (first)
    #{\a \e \i \o \u})
=> nil
0 голосов
/ 17 ноября 2018

регулярное выражение в порядке.Без регулярного выражения:

(contains? (set "aeiou") (first "apple"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...