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

如何利用startsWith和contains实现基于字符串列表的版本校验

版本校验功能实现方案

功能需求

校验x.x.x格式的版本号是否可被接受,判断规则为:提取版本号的x.x前缀,若该前缀存在于指定的接受版本列表(元素格式为x.x)中,则版本号被接受;反之则不接受。

实现思路

  • 先校验输入版本号是否符合x.x.x格式(提升健壮性),不符合直接返回false
  • 分割版本号字符串,提取前两个部分拼接为x.x格式的前缀
  • 检查该前缀是否存在于预定义的接受版本列表中,返回检查结果

完整代码实现

测试用例与实现方法

import org.junit.Assert;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;

public class VersionValidator {

    @Test
    public void testVersionAcceptance() {
        Assert.assertTrue(isVersionAccepted("1.3.2"));
        Assert.assertFalse(isVersionAccepted("1.2.1"));
        // 额外测试格式异常场景
        Assert.assertFalse(isVersionAccepted("1.3"));
        Assert.assertFalse(isVersionAccepted("1"));
        Assert.assertFalse(isVersionAccepted("1.3.4.5"));
        Assert.assertFalse(isVersionAccepted(null));
    }

    public static boolean isVersionAccepted(String version) {
        List<String> acceptedVersions = Arrays.asList("1.1", "1.3", "1.5", "2.5", "2.7", "3.1", "3.2");
        
        // 校验版本格式合法性
        if (version == null || !version.matches("^\\d+\\.\\d+\\.\\d+$")) {
            return false;
        }
        
        // 提取x.x前缀
        String[] versionSegments = version.split("\\.");
        String versionPrefix = versionSegments[0] + "." + versionSegments[1];
        
        // 匹配接受列表
        return acceptedVersions.contains(versionPrefix);
    }
}

代码说明

  • 格式校验:用正则表达式^\\d+\\.\\d+\\.\\d+$确保版本号是三段数字组成的x.x.x格式,同时处理null输入
  • 前缀提取:通过.分割字符串,取前两段拼接成目标前缀格式
  • 列表匹配:直接调用List.contains()方法完成前缀匹配,逻辑简洁高效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:22:19