【发布时间】:2017-01-31 23:03:16
【问题描述】:
我想检查一个字符串是否为大写。有一个检查字符的函数,但没有检查字符串的函数。
【问题讨论】:
我想检查一个字符串是否为大写。有一个检查字符的函数,但没有检查字符串的函数。
【问题讨论】:
假设您要检查 String 中的每个字符都是大写的,您可以像这样使用every?:
user=> (every? #(Character/isUpperCase %) "Hello")
false
user=> (every? #(Character/isUpperCase %) "HELLO")
true
【讨论】:
every? 这样的高级实用程序来完成这样的低级任务不会有太多好处。
(every? (fn [^Character x] (Character/isUpperCase x)) "HELLO")。现在它应该与您的变体相当
clojure.string/upper-case 的方法。
false(例如 (every? #(Character/isUpperCase %) "Hello, World!") => false)
对于此类问题,首先要寻找 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 %))
【讨论】: