如何利用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
相关产品推荐
相关产品推荐

