2016-09-23 9 views

答えて

4

あなたはこのようevery?を使用することができ、あなたは文字列のすべての文字が大文字であることを確認したいと仮定します。Javaの答えを探していることから始め、質問のこの種の

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

これは論理的に正しいですが、このアプローチは性能面私には無理そうです。私が実行した基準ベンチマークでは、私が提案した実装よりも50倍遅いことがわかりました。このような低レベルのタスクでは、「every?」のような高レベルのユーティリティを使用することで多くの利点は得られません。 –

+3

@ValentinWaeselynckアプローチは実行可能です。 '(each?(fn [^ Character x](Character/isUpperCase x))' 'HELLO") '型ヒントを追加すると、パフォーマンスが向上します。今はあなたのバリエーションと匹敵するはずです – leetwinski

+1

私は修正しました。このアプローチは私が思ったよりも速いです(これまで提案されたものの中で最も遅いですが)。それは私の実験(ここでは:https://gist.github.com/vvvvalvalval/0b6be04c0191cce6fa09bba8f821b967)によると、まだStringUtilsの後ろにあります。個人的には、私はまだ 'clojure.string/upper-case'を使ってアプローチを選びます。 –

4

:)

この場合

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

、私recommandationはApache Commons Lang's StringUtils/isAllUpperCase

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

(StringUtils/isAllUpperCase "HeLLO") 
01を使用することです

あなたはすべてのプラットフォームソリューションポータブル(Clojureの、ClojureScriptを、...)したい場合は最善の戦略は、元に大文字の文字列を比較することはおそらくです:

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

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

のClojure(スクリプト)のためのcuerdasライブラリー大文字をチェックするために使用できる関数upper(およびlocale-upper)を持っています。

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

#(= % (cuerdas/upper %))