Browse Source

修改判断文本为数字方法

hujing 5 years ago
parent
commit
27cd9eafa2

+ 2 - 8
nlp/src/main/java/org/diagbot/nlp/util/NlpUtil.java

@@ -3,6 +3,7 @@ package org.diagbot.nlp.util;
 import org.diagbot.nlp.participle.word.Lexeme;
 
 import java.util.*;
+import java.util.regex.Pattern;
 
 /**
  * @Auther: fyeman
@@ -39,14 +40,7 @@ public class NlpUtil {
         if (NlpUtil.isFeature(l.getProperty(), new NegativeEnum[]{NegativeEnum.NUMBER_QUANTIFIER})) {
             return true;
         }
-        boolean allAreNumber = true;
-        for (char c : l.getText().toCharArray()) {
-            if (c < '0' || c > '9') {
-                allAreNumber = false;
-                break;
-            }
-        }
-        return allAreNumber;
+        return Pattern.compile("^[-\\+]?\\d+(\\.\\d+)?").matcher(l.getText()).find();
     }
 
     public static double numberText2value(Lexeme l) {

+ 7 - 8
rule/src/main/java/org/diagbot/rule/lis/LisApplication.java

@@ -9,6 +9,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.regex.Pattern;
 
 /**
  * @Description:
@@ -86,17 +87,15 @@ public class LisApplication {
         return false;
     }
 
+    /**
+     * 只要是整数或者是小数就是true
+     * @param value
+     * @return
+     */
     public static boolean isNumber(String value) {
         if (StringUtils.isEmpty(value)) {
             return false;
         }
-        boolean allAreNumber = true;
-        for (char c : value.toCharArray()) {
-            if (c < '0' || c > '9') {
-                allAreNumber = false;
-                break;
-            }
-        }
-        return allAreNumber;
+        return Pattern.compile("^[-\\+]?\\d+(\\.\\d+)?").matcher(value).find();
     }
 }