浏览代码

校验待续

zhoutg 5 年之前
父节点
当前提交
865c66d1d6
共有 1 个文件被更改,包括 93 次插入0 次删除
  1. 93 0
      knowledgeman-service/src/main/java/com/diagbot/facade/DiagnoseFacade.java

+ 93 - 0
knowledgeman-service/src/main/java/com/diagbot/facade/DiagnoseFacade.java

@@ -52,6 +52,8 @@ import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.Stack;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 @Component
@@ -595,4 +597,95 @@ public class DiagnoseFacade extends DiagnoseServiceImpl {
         return dq;
     }
 
+
+    public static void main(String[] args) {
+        String s = "(1.1/1.2/1.3)任一+(1.4/1.17/1.18)任六+(2.1/2.2/2.3/2.4/2.5/2.6/2.7/2.8/2.9/2.11)任一";
+        String s1 = "111任一任二22";
+        System.out.println(splitCode(s));
+
+
+//        System.out.println(isMatch(s));
+
+        // 待解决 任前面一定是),括号内容不能为空
+        /**
+         * 1、括号成对校验
+         * 2、是否出现重复分隔符
+         * 3、获取编码并校验
+         */
+    }
+
+
+
+    public static boolean verifyRen(String s) {
+        int i = s.indexOf("任");
+        while(-1 != i) {
+            if(i == 0) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+
+    /**
+     * 获取编码
+     * @param s
+     * @return
+     */
+    public static List<String> splitCode(String s) {
+        List<String> res = new ArrayList<>();
+        String resg1 = "\\(|/|\\)|任一|任二|任三|任四|任五|任六|任七|任八|任九|任十|\\+";
+        String[] arr = s.split(resg1);
+        for(String str : arr) {
+            if (StringUtil.isNotEmpty(str)) {
+                res.add(str);
+            }
+        }
+        return res;
+    }
+
+
+    /**
+     * 括号是否成对匹配
+     * @param s
+     * @return
+     */
+    public static boolean isMatch(String s) {
+        Stack<Character> sc=new Stack<Character>();
+        char[] c=s.toCharArray();
+        for (int i = 0; i < c.length; i++) {
+            if (c[i]=='(') {
+                sc.push(c[i]);
+            }
+            else if (c[i]==')') {
+                if(sc.isEmpty()){
+                    return false;
+                }
+                else{
+                    if (sc.peek()=='(') {
+                        sc.pop();
+                    }
+                }
+            }
+        }
+        if (sc.empty()) {
+            return true;
+        }else {
+            return false;
+        }
+    }
+
+
+    /**
+     * 是否出现重复分隔符
+     * @param s
+     * @return
+     */
+    public static boolean isRepeat(String s) {
+        String regex = ".*((\\()|(\\))|(\\+)|(//)|(任一)|(任二)|(任三)|(任四)|(任五)|(任六)|(任七)|(任八)|(任九)|(任十)){2,}.*";
+        return Pattern.matches(regex, s);
+    }
+
+
+
 }