[英]Java/Scala regex questions
有没有更好的方法来简化我的以下代码? 谢谢!
if (n.equals("000000000") || n.equals("1111111111") || n.equals("222222222")|| n.equals("333333333")|| n.equals("444444444")|| n.equals("555555555")|| n.equals("666666666")|| n.equals("777777777")|| n.equals("888888888")|| n.equals("999999999")) {
// do my function
}
我希望接受所有9位数字的字符串,但所有9位数字相同的情况除外。
用这个:
^(?!(\\d)(\\1){8})\\d{9}$
因此,您的代码应为:
val regex = "^(?!(\\d)(\\1){8})\\d{9}$".r
if (regex.findFirstIn(n).isDefined)
//true
这也应该工作:
if ( n.matches("^(?!(\\d)(\\1){8})\\d{9}$") )
//true
如果不使用正则表达式,这样做可能会更高效(更易读):
def check(s:String) = s.size == 9 && ('0' to '9').contains(s.head) && s.forall(_ == s.head)
@ check("000000000")
res3: Boolean = true
@
@ check("000000001")
res4: Boolean = false
@
@ check("00000000")
res6: Boolean = false
@
@ check("111111111")
res7: Boolean = true
@
@ check("aaaaaaaaa")
res8: Boolean = false
@
@ check("")
res10: Boolean = false
您的描述与您的注释相矛盾,因此您可能需要反转函数的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.