You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中startsWith()多前缀匹配问题:结合输入长度校验需求

解决EAN12前缀校验的问题

嘿,我发现你在EAN12的前缀校验这里卡壳啦!问题出在你对startsWith()方法的用法上——Java里这个方法不能直接用||把多个前缀字符串连在一起,它每次只能接收一个字符串参数哦。

咱们来调整一下代码,给你两种可行的方案:

方案一:多个startsWith()逻辑或判断

这是最直接的修改方式,把每个前缀单独用startsWith()检查,再用||连接判断条件:

Long number = ean12; 
String inputEan12 = Long.toString(ean12); 
if (inputEan12.length() == 12) { 
    // 逐个检查前缀,用||连接判断条件
    if (inputEan12.startsWith("02") 
        || inputEan12.startsWith("21") 
        || inputEan12.startsWith("22") 
        || inputEan12.startsWith("23") 
        || inputEan12.startsWith("24") 
        || inputEan12.startsWith("25") 
        || inputEan12.startsWith("26") 
        || inputEan12.startsWith("27") 
        || inputEan12.startsWith("28") 
        || inputEan12.startsWith("29")) {
        // 符合前缀要求的处理逻辑
    } 
} else { 
    // 长度不符合的处理逻辑
}

方案二:用集合存储前缀,更易维护

如果以后需要添加或修改前缀,这种方式会更方便。先把所有有效前缀放进一个集合,再截取输入的前两位判断是否在集合中:

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

// ...你的其他代码
Long number = ean12; 
String inputEan12 = Long.toString(ean12); 
// 建议把这个集合定义成类常量,避免重复创建
Set<String> validEanPrefixes = new HashSet<>(Arrays.asList("02", "21", "22", "23", "24", "25", "26", "27", "28", "29"));

if (inputEan12.length() == 12) { 
    // 截取前两位前缀,检查是否在有效集合中
    if (validEanPrefixes.contains(inputEan12.substring(0, 2))) {
        // 符合前缀要求的处理逻辑
    } 
} else { 
    // 长度不符合的处理逻辑
}

要是你的项目用的是Java 9及以上版本,还可以用更简洁的Set.of()创建不可变集合:

Set<String> validEanPrefixes = Set.of("02", "21", "22", "23", "24", "25", "26", "27", "28", "29");

这样就能正确完成前缀校验啦!

内容的提问来源于stack exchange,提问作者SDJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:20:14