From 969af823935717abeb8c1503a7888314f43d7f0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Fri, 13 Sep 2024 10:16:02 +0800 Subject: [PATCH] =?UTF-8?q?ebom=E8=BD=ACPBOM=E6=8A=A5=E9=94=99=E9=97=AE?= =?UTF-8?q?=E9=A2=98-=E7=89=88=E6=9C=AC=E5=8F=B7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nflg/product/bomnew/util/VersionUtil.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VersionUtil.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VersionUtil.java index f79fad4a..cf8731f3 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VersionUtil.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/VersionUtil.java @@ -5,7 +5,9 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.util.StrUtil; import org.springframework.data.util.Version; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import static org.apache.naming.SelectorContext.prefix; @@ -59,6 +61,7 @@ public class VersionUtil { // Split the previous version number into its components String[] previousComponents = previousVersion.replace(versionPrefix, "").split("\\."); + previousComponents= filterNumericStrings(previousComponents).toArray(new String[0]); int previousMajor = Integer.parseInt(previousComponents[0]); int previousMinor = previousComponents.length < 2 ? 0 : Integer.parseInt(previousComponents[1]); @@ -86,6 +89,43 @@ public class VersionUtil { return nextVersion; } + /** + * 过滤出数组中仅包含数字的字符串。 + * + * @param array 输入的字符串数组 + * @return 包含数字字符串的列表 + */ + public static List filterNumericStrings(String[] array) { + List result = new ArrayList<>(); + for (String s : array) { + if (isNumeric(s)) { + result.add(s); + } + } + return result; + } + + /** + * 检查给定的字符串是否表示一个数字。 + * 支持整数、浮点数和科学计数法表示的数字。 + * + * @param str 要检查的字符串 + * @return 如果字符串表示一个数字,则返回true;否则返回false + */ + private static boolean isNumeric(String str) { + if (str == null || str.isEmpty()) { + return false; + } + try { + // 尝试将字符串转换为Double类型 + Double.parseDouble(str); + return true; + } catch (NumberFormatException e) { + // 如果转换失败,说明不是有效的数字格式 + return false; + } + } + /** * 版本比较 * @param version1