如何检查Clojure中的字符串是否为UpperCase?

vis*_*kar 6 string clojure uppercase

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

nta*_*lbs 6

假设您要检查String中的每个字符是否都是大写字母,可以这样使用every?

user=> (every? #(Character/isUpperCase %) "Hello")
false
user=> (every? #(Character/isUpperCase %) "HELLO")
true
Run Code Online (Sandbox Code Playgroud)

  • @ValentinWaeselynck这种方法是可行的。如果添加类型提示,将提高性能:`(每个?(fn [^字符x](Character / isUpperCase x))“ HELLO”)`。现在它应该可以与您的变体相媲美 (3认同)

Val*_*nck 5

对于此类问题,请先查找Java答案:)

是否存在现有的库方法来检查Java中的字符串是全部大写还是小写?

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

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

(StringUtils/isAllUpperCase "HeLLO")
Run Code Online (Sandbox Code Playgroud)

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

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

(defn all-uppercase? [s]
  (= s (str/upper-case s)))
Run Code Online (Sandbox Code Playgroud)