如何在Scala中测试字符串是否在python中具有大写字母

时间:2017-07-28 19:39:25

标签: python scala functional-programming

在Scala中,我可以测试一个字符串是否有这样的大写字母:

{"G":[{"option1":"1.5 hour","Question1":"HI","answer":"OptionC","option3":"1hour","option4":"None","option2":"2hour"},{"option1":15,"Question1":"jkl","answer":"OptionD","option3":25,"option4":70,"option2":45},{"option1":"Oil lamp","Question1":"jkl","answer":"OptionD","option3":"Newspaper","option4":"None","option2":"kindling wood"}],"Sports":[{"option1":"FNLAKDS","Question1":"gk1","option3":"ram","option4":"ram","option2":"ram"},{"option1":"FNLAKDS","Question1":"gk2","option3":"ram","option4":"ram","option2":"ram"},{"option1":"FNLAKDS","Question1":"gk3","option3":"ram","option4":"ram","option2":"ram"}]}

我能想到的Python中最全面的形式是:

val nameHasUpperCase = name.exists(_.isUpper)
有点笨拙。有没有更好的方法来做到这一点? (它只是一个不太重要的脑筋急转弯:)

3 个答案:

答案 0 :(得分:7)

最接近Scala语句的可能是any(..)语句:

any(x.isupper() for x in a)

这将使用生成器:从找到此元素的那一刻起,any(..)将停止并返回True

这会产生:

>>> a ='asdFggg'
>>> any(x.isupper() for x in a)
True

或另一个map(..)

any(map(str.isupper,a))

答案 1 :(得分:3)

另一种方法是将原始字符串与完全小写的字符串进行比较:

>>> a ='asdFggg'
>>> a == a.lower()
False

如果您希望此返回true,请使用!=代替==

答案 2 :(得分:1)

还有

nameHasUpperCase = bool(re.search(r'[A-Z]', name))