如何从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。
我是 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。