소스 검색

fix: case_no_trim

许家凯 4 년 전
부모
커밋
45b0b293a1
1개의 변경된 파일40개의 추가작업 그리고 5개의 파일을 삭제
  1. 40 5
      src/main/scala/com/winhc/bigdata/spark/utils/BaseUtil.scala

+ 40 - 5
src/main/scala/com/winhc/bigdata/spark/utils/BaseUtil.scala

@@ -338,9 +338,12 @@ object BaseUtil {
 
   @deprecated
   private val case_pat = ".*([(\\(]\\d{4}[)\\)][^号]*号?).*".r
-
+  @deprecated
   private val case_pat2 = "(((20\\d{2}|19\\d{2})|\\((20\\d{2}|19\\d{2})\\))[^号]{3,}号?).*".r
+  private val case_pat3 = ".*([(\\(]\\d{4}[)\\)][^号]*号.*?)".r
+  @deprecated
   private val year_pat = "(\\d{4}?)年".r
+  private val year_pat_2 = "\\(?(\\d{4}?)\\)?年".r
 
   /**
    * 案号格式规整
@@ -348,6 +351,7 @@ object BaseUtil {
    * @param str
    * @return
    */
+  @deprecated
   def case_no_trim(str: String): String = {
     if (StringUtils.isBlank(str)) return null
     var case_no = toDBC(str)
@@ -361,6 +365,37 @@ object BaseUtil {
     } else null
   }
 
+
+  /**
+   * 案号格式规整
+   *
+   *   1.全角符号替换为半角。
+   *   2.去除空格
+   *   3.长度大于等于8
+   *   4.中英文括号统一为英文
+   *   5.将手误的字母o转为数字0
+   *   6.去除连续的号字。如“号号” -> “号”
+   *   7.将“yyyy年”转化为 “(yyyy)”
+   *   8.从“(yyyy)”开始必须包函“号”字
+   *
+   * @param str
+   * @return
+   */
+  def case_no_trim_v2(str: String): String = {
+    if (StringUtils.isBlank(str)) return null
+    var case_no = toDBC(str)
+    case_no = case_no.replace(" ", "");
+    if (case_no.length < 8) return null
+    case_no = case_no.replace("(", "(")
+      .replace(")", ")")
+      .replaceAll("O", "0")
+      .replaceAll("号{2,}", "号")
+    case_no = year_pat_2.replaceAllIn(case_no, "\\($1\\)")
+    if (case_pat3 matches case_no) {
+      case_pat3.replaceAllIn(case_no, "$1")
+    } else null
+  }
+
   def sortString(s: String, split: String = "\\001"): String = {
     var r = ""
     if (StringUtils.isNotBlank(s)) {
@@ -448,16 +483,16 @@ object BaseUtil {
   }
 
   def main(args: Array[String]): Unit = {
-    println(nameCleanup("小米科技.;有,@限公  司  雷军"))
+//    println(nameCleanup("小米科技.;有,@限公  司  雷军"))
     //    println(title("xx", null, "reason"))
     //    println(parseAddress("大石桥市人民法院"))
-    //    println(case_no_trim("(2015)怀执字第03601号号"))
+        println(case_no_trim_v2("(2019)年中国贸仲京裁字第0394号号"))
     //    val seq = Seq("1", "3", "2", "7").mkString("\001")
     //    println(sortString(seq))
     //println(caseStage("(2019)鄂初7号"))
-    val yg_name = ",,"
+    /*val yg_name = ",,"
     val bg_name = "张三,,小米,;"
-    println(compareName(yg_name, bg_name))
+    println(compareName(yg_name, bg_name))*/
   }
 
 }