如何从clojure中的句子中获取大写字符串?

How to obtain Uppercase string from a sentence in clojure?

我是 clojure 的新手,不熟悉可用的函数。所以我想知道如何从句子中检索大写单词。 例如: 输入:IllegalArgumentException 包含?不支持以下类型:java.lang.String clojure.lang.RT.contains 输出:支持

首先我们编写一个函数来测试字符串是否为大写。

(defn upper-case? [word]
    (= word (clojure.string/upper-case word)))

然后我们将任意字符串拆分为单词,过滤掉所有非大写的单词。在您的示例中,至少有两个连续空格的实例,因此也必须将其过滤掉。

(defn upper-case-words [sentence]
    (filterv #(and (upper-case? %) (not= "" %)) (clojure.string/split sentence #" ")))

(upper-case-words "Input: IllegalArgumentException contains? not SUPPORTED on type: java.lang.String  clojure.lang.RT.contains")
["SUPPORTED"]

一种方法是像在任何其他语言中一样使用正则表达式:

(re-find #"\b[A-Z]+\b" s)
;; => "SUPPORTED"

如果有多个预期匹配项,您可以使用 re-seq:

(re-seq #"\b[A-Z]+\b" "THIS is a TEST")
;; => ("THIS" "TEST")

既然您提到您不熟悉可用功能,请检查一下ClojureDocs