如何在 clojure 中检查字符串是否为大写?

How do I check whether a string is UpperCase or not in clojure?

我想检查一个字符串是否为大写。有检查字符的函数,但没有检查字符串的函数。

假设你想检查字符串中的每个字符都是大写的,你可以像这样使用every?

user=> (every? #(Character/isUpperCase %) "Hello")
false
user=> (every? #(Character/isUpperCase %) "HELLO")
true

对于这种问题,首先要寻找Java答案:)

Is there an existing library method that checks if a String is all upper case or lower case in Java?

在这种情况下,我的建议是使用Apache Commons Lang's StringUtils/isAllUpperCase

(import org.apache.commons.lang3.StringUtils)

(StringUtils/isAllUpperCase "HeLLO")

如果您想要一个跨所有平台(Clojure、ClojureScript 等)可移植的解决方案,最好的策略可能是将大写字符串与原始字符串进行比较:

(require '[clojure.string :as str])

(defn all-uppercase? [s]
  (= s (str/upper-case s)))

Clojure(Script) 的 cuerdas 库有一个函数 upper(和 locale-upper)可以用来检查大写。

https://funcool.github.io/cuerdas/latest/#upper

#(= % (cuerdas/upper %))