方法一:使用正则表达式
import java.util.regex.Pattern;
public class VersionValidator {
// 定义版本号的正则表达式模式
private static final String VERSION_REGEX = "^\\d+(\\.\\d+){0,2}$";
private static final Pattern VERSION_PATTERN = Pattern.compile(VERSION_REGEX);
/**
* 验证版本号字符串是否符合规定
* @param version 待验证的版本号字符串
* @return 如果符合规定返回 true,否则返回 false
*/
public static boolean isValidVersion(String version) {
if (version == null) {
return false;
}
return VERSION_PATTERN.matcher(version).matches();
}
public static void main(String[] args) {
String validVersion = "1.0.0";
String invalidVersion = "1.a.0";
System.out.println(isValidVersion(validVersion)); // 输出: true
System.out.println(isValidVersion(invalidVersion)); // 输出: false
}
}
代码解释:
正则表达式 ^\d+(\.\d+){0,2}$:
^:表示字符串的开始。
\d+:匹配一个或多个数字。
(\.\d+):匹配一个点号后跟一个或多个数字。
{0,2}:表示前面的模式可以出现 0 到 2 次。
$:表示字符串的结束。
isValidVersion 方法:
首先检查传入的字符串是否为 null,如果是则返回 false。
然后使用 Pattern 类的 matcher 方法创建一个 Matcher 对象,并调用 matches 方法进行匹配。
方法二:手动解析字符串
public class VersionValidatorManual {
/**
* 验证版本号字符串是否符合规定
* @param version 待验证的版本号字符串
* @return 如果符合规定返回 true,否则返回 false
*/
public static boolean isValidVersion(String version) {
if (version == null) {
return false;
}
String[] parts = version.split("\\.");
if (parts.length < 1 || parts.length > 3) {
return false;
}
for (String part : parts) {
try {
int num = Integer.parseInt(part);
if (num < 0) {
return false;
}
} catch (NumberFormatException e) {
return false;
}
}
return true;
}
public static void main(String[] args) {
String validVersion = "1.0.0";
String invalidVersion = "1.a.0";
System.out.println(isValidVersion(validVersion)); // 输出: true
System.out.println(isValidVersion(invalidVersion)); // 输出: false
}
}
代码解释:
split 方法:使用 split 方法将版本号字符串按点号分割成多个部分。
检查部分数量:确保分割后的部分数量在 1 到 3 之间。
解析每个部分:尝试将每个部分解析为整数,如果解析失败或解析结果为负数,则返回 false。
这两种方法都可以有效地验证 1.0.0 格式的字符串是否符合规定,你可以根据实际需求选择合适的方法。