我寫了代碼,它按預期作業,當我申請只有數字或不僅僅是數字的入口非空字串時:
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”。所以它將“”識別為數字字符!
我做錯了什么,我該如何改進我的代碼?
uj5u.com熱心網友回復:
該forall方法檢查集合中所有值的測驗是否為真。如果沒有值則回傳true,因為所有值都通過了測驗。
對于您想要的行為,您需要添加一個額外的測驗:
def isAllDigits(x: String) = x.nonEmpty && x.forall(_.isDigit)
uj5u.com熱心網友回復:
正則運算式的替代方法是使用匹配整個字串并匹配 1 個或多個數字的匹配項。
請注意,您的方法def checkDigits回傳 Unit 因為您只是在列印。要使其回傳一個布林值,您可以使用:
def checkDigits(x: String) = x.matches("\\d ")
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/377128.html
上一篇:Python中的重復欄位格式
