xufei 4 سال پیش
والد
کامیت
8ea80cdd2b

+ 1 - 1
src/main/java/com/winhc/bigdata/udf/StringReplaceChar.java

@@ -26,7 +26,7 @@ public class StringReplaceChar extends UDF {
                     .replaceAll(";", ",")
                     .replaceAll(":", ",")
                     .replaceAll("\\s+", ",");
-            List<String> list = Arrays.asList(arr.split(",")).stream().filter(m -> m.length() > 1).collect(Collectors.toList());
+            List<String> list = Arrays.asList(arr.split(",",-1)).stream().filter(m -> m.length() > 1).collect(Collectors.toList());
             return String.join(",", list);
         }else{
             return "";

+ 39 - 0
src/main/java/com/winhc/bigdata/udf/replace_delimiter.java

@@ -0,0 +1,39 @@
+package com.winhc.bigdata.udf;
+
+import com.aliyun.odps.udf.UDF;
+import com.aliyun.odps.utils.StringUtils;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+/**
+ * @Author: π
+ * @Description: 替换分割符
+ */
+public class replace_delimiter extends UDF {
+
+    public String evaluate(String val) {
+        if (StringUtils.isNotBlank(val)) {
+            String res = val.replaceAll("、", ",")
+                    .replaceAll(";", ",")
+                    .replaceAll(",", ",")
+                    .replaceAll(" ", ",")
+                    .replaceAll("。", ",")
+                    .replaceAll(";", ",")
+                    .replaceAll(":", ",")
+                    .replaceAll("\\s+", ",");
+            return res;
+        }else{
+            return "";
+        }
+    }
+
+    public static void main(String[] args) {
+        String res = new replace_delimiter().evaluate("2015)深南法蛇民初第883-887受理郑委,曹   连云,庄忠杰,曹元洪,曹硕");
+        System.out.println(res);
+        String res1 = new replace_delimiter().evaluate("宜城兴荣民族塑料制品有限公司、屈万英(公民身份号码:**************504X)、何秋实(公民身份号码:**************0055)、曾娟娟(公民身份号码:**************0040)、王琴(公民身份号码:**************5523)、丁国红(公民身份号码:**************2016)");
+        System.out.println(res1);
+    }
+}

+ 70 - 0
src/main/java/com/winhc/bigdata/udf/split_json.java

@@ -0,0 +1,70 @@
+package com.winhc.bigdata.udf;
+
+import com.aliyun.odps.udf.UDF;
+import com.aliyun.odps.utils.StringUtils;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+import static apsara.odps.TypesProtos.Type.Map;
+
+/**
+ * @Author: π
+ * @Description: 分割json
+ */
+public class split_json extends UDF {
+
+    public String evaluate(String unionJson, String keys) {
+        Gson gson = new Gson();
+        List<Litigant> litigants = gson.fromJson(unionJson, new TypeToken<List<Litigant>>() {
+        }.getType());
+        Map<String, String> map = litigants.stream().collect(Collectors.toMap(Litigant::getName, Litigant::getLitigant_id, (k1, k2) -> k2));
+        List<Litigant> list2 = Arrays.asList(keys.split(",")).stream()
+                .collect(Collectors.toMap(x -> x, x -> map.getOrDefault(x,""), (k1, k2) -> k2))
+                .entrySet().stream()
+                .map(e -> new Litigant(e.getKey(), e.getValue())).collect(Collectors.toList());
+        return gson.toJson(list2);
+    }
+
+    public static void main(String[] args) {
+        String unionJson = "[{\"name\":\"招商银行股份有限公司\",\"litigant_id\":\"\"},{\"name\":\"粤民初号招商银行股份有限公司信用卡中心\",\"litigant_id\":\"\"},{\"name\":\"黄丽芹\",\"litigant_id\":\"\"}]";
+        String keys = "黄丽芹1,招商银行股份有限公司,粤民初号招商银行股份有限公司信用卡中心";
+        //String keys = null;
+        split_json n = new split_json();
+        System.out.println(n.evaluate(unionJson, keys));
+    }
+
+    public class Litigant {
+        public Litigant(String name, String litigant_id) {
+            this.name = name;
+            this.litigant_id = litigant_id;
+        }
+
+        private String name;
+
+        private String litigant_id;
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public String getLitigant_id() {
+            return litigant_id;
+        }
+
+        public void setLitigant_id(String litigant_id) {
+            this.litigant_id = litigant_id;
+        }
+    }
+}
+
+

+ 33 - 0
src/main/java/com/winhc/bigdata/udf/str_json.java

@@ -0,0 +1,33 @@
+package com.winhc.bigdata.udf;
+
+import com.aliyun.odps.udf.UDF;
+import com.google.gson.Gson;
+import java.util.HashMap;
+
+/**
+ * @Author: π
+ * @Date: 2020/5/14 16:26
+ * @Description: 字符串转json
+ */
+public class str_json extends UDF {
+
+    public String evaluate(String keys, String values, String split) {
+        HashMap<String, String> m1 = new HashMap<>();
+        Gson gson = new Gson();
+        String[] k1 = keys.split(split,-1);
+        String[] v1 = values.split(split,-1);
+        for (int i = 0; i <= k1.length - 1; i++) {
+            m1.put(k1[i], v1[i]);
+        }
+        return gson.toJson(m1);
+    }
+
+    public static void main(String[] args) {
+        String keys = "name@@litigant_id";
+        String values = "fontface=\"宋体\">\\<fontface=\"宋体\">张文亮</font></font@@123456";
+        //String values = "@@";
+        System.out.println(new str_json().evaluate(keys, values, "@@"));
+    }
+}
+
+