繁体   English   中英

Java / Scala正则表达式问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM