当我申请入口时,当我申请入口时,我编写了代码,代码按预期的方式工作,而不是只带数字的空字符串,也不只是数字:
def checkDigits(nameOrId: String): Unit = {
def isAllDigits(x: String) = x forall (c => c.isDigit)
if (isAllDigits(nameOrId)) print("WITH_ID ")
else print("WITH_NAME")
}
但是当我申请入学“-value”时,它没有打印"WITH_NAME",而是"WITH_ID“。所以它把"“识别为数字字符!
我做错了什么,如何改进我的代码?
发布于 2021-12-07 07:40:46
forall
方法检查集合中的所有值是否为真测试。如果没有值,则返回true
,因为所有值都通过测试。
对于您想要的行为,您需要添加一个额外的测试:
def isAllDigits(x: String) = x.nonEmpty && x.forall(_.isDigit)
发布于 2021-12-07 17:21:22
regex的替代方法是使用火柴,它应该匹配整个字符串并匹配一个或多个数字。
请注意,您的方法def checkDigits
返回单元,因为您只是在打印。若要使其返回布尔值,可以使用:
def checkDigits(x: String) = x.matches("\\d+")
https://stackoverflow.com/questions/70256195
复制相似问题