Explorar o código

Merge remote-tracking branch 'origin/master'

MarkHuang %!s(int64=4) %!d(string=hai) anos
pai
achega
2d3a734df7
Modificáronse 1 ficheiros con 48 adicións e 2 borrados
  1. 48 2
      src/main/java/com/diagbot/util/CoreUtil.java

+ 48 - 2
src/main/java/com/diagbot/util/CoreUtil.java

@@ -643,7 +643,7 @@ public class CoreUtil {
                 return 20.0;
             }
             // 全是整形数字,当成年龄处理
-            if (CatalogueUtil.numbersOnly(ageStr)) {
+            if (numbersOnly(ageStr)) {
                 return Double.parseDouble(ageStr);
             }
             // 20日
@@ -654,8 +654,16 @@ public class CoreUtil {
             if (ageStr.endsWith("岁")) {
                 return Double.parseDouble(ageStr.substring(0, ageStr.length() - 1));
             }
+            // 3岁7个月
+            if (ageSuiYue(ageStr)) {
+                String[] ageArr = new String[2];
+                int indexSui = ageStr.indexOf("岁");
+                ageArr[0] = ageStr.substring(0, indexSui);
+                ageArr[1] = ageStr.substring(indexSui + 1,ageStr.indexOf("个月"));
+                return Double.parseDouble(ageArr[0]) + getHalfUp(Double.parseDouble(ageArr[1]) / 12);
+            }
             // 1.08月 | .11月 | 3月
-            if (ageStr.endsWith("月")) {
+            if (ageYue(ageStr)) {
                 String noUnit = ageStr.substring(0, ageStr.length() - 1);
                 String[] ageArr = new String[2];
                 String[] splitArr = noUnit.split("\\.");
@@ -681,6 +689,39 @@ public class CoreUtil {
         return 20.0;
     }
 
+    /**
+     * 判断字符串是否 仅 包含数字
+     *
+     * @param str
+     * @return
+     */
+    public static boolean numbersOnly(String str) {
+        String regex = "^[0-9]+$";
+        return str.matches(regex);
+    }
+
+    /**
+     * 判断年龄字符串:xx月
+     *
+     * @param str
+     * @return
+     */
+    public static boolean ageYue(String str) {
+        String regex = "^[0-9]*[\\.]*[0-9]{1,2}月$";
+        return str.matches(regex);
+    }
+
+    /**
+     * 判断年龄字符串:3岁7个月
+     *
+     * @param str
+     * @return
+     */
+    public static boolean ageSuiYue(String str) {
+        String regex = "^[0-9]{1,3}岁[0-9]{1,2}个月$";
+        return str.matches(regex);
+    }
+
     /**
      * 四舍五入保留2位小数
      *
@@ -704,4 +745,9 @@ public class CoreUtil {
         }
         return str;
     }
+
+    public static void main(String[] args) {
+        String ageStr = "3月";
+        System.out.println(convertAge(ageStr));
+    }
 }