Java:startsWith()具有不同的前缀,而不仅仅是一个
我需要写一些代码来检查输入的长度和开头。根据这两个参数,我必须修改输入。我成功地检查了输入的长度。但是,当我试图检查输入的开头时,我感到很困难
到目前为止,我在这里:
Long number = ean12;
String inputEan12 = Long.toString(ean12);
if (inputEan12.length() == 12) {
if (inputEan12.startsWith("02"||"21"||"22"||"23"||"24"||"25"||"26"||"27"||"28"||"29")
//SOME CODE
} else {
//SOME OTHER CODE
}
} else if (inputEan12.length() == 11) {
//SOME MORE CODE
} else {
System.out.println("All is good!");
}
我选择使用“.startsWith()”方法进行检查,认为这样可以轻松解决问题。但我一次只能做一张支票。似乎我需要为我想要检查的每个开头/数字添加一个“如果”。它会变成一头大白象
因此,我考虑使用一个表(例如:“String[]myTable”)将所有“开始变量”放入表中,并在该表上循环。但是这个startsWith()方法不允许我这么做。看来我的前缀必须很简单
有什么解决方案或建议可以让我轻松检查输入的开头吗
# 1 楼答案
没有像
startsWith
那样的or
短语法。可以使用多个对String.startsWith
的调用,这些调用由||
分隔(这在逻辑上是您编写的)。但是,获取一个有效前缀数组和inputEan12
的子字符串,并将anyMatch
与Arrays.stream
一起使用,会更短。比如# 2 楼答案
在这里,希望这就是你想要的:
# 3 楼答案
或者简单地迭代:
# 4 楼答案
如果您愿意使用外部库,那么Commons LangStringUtils.startsWithAny将起到以下作用:
# 5 楼答案
使用正则表达式
# 6 楼答案
你可以这样使用
.matches(String regex)
: