From a836f03a5d1fbfa81e147d09ffdfa87ba3975c13 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期二, 18 三月 2025 16:45:02 +0800
Subject: [PATCH] 1
---
 server/services/src/main/java/com/doumee/core/utils/StringTools.java |  269 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 269 insertions(+), 0 deletions(-)
diff --git a/server/services/src/main/java/com/doumee/core/utils/StringTools.java b/server/services/src/main/java/com/doumee/core/utils/StringTools.java
new file mode 100644
index 0000000..b10f795
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/core/utils/StringTools.java
@@ -0,0 +1,269 @@
+package com.doumee.core.utils;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.*;
+
+/**
+ * @author yezhihao
+ * https://gitee.com/yezhihao/jt808-server
+ */
+public class StringTools {
+
+    public static final int[] EMPTY = new int[0];
+
+    public static final Integer[] EMPTY_ = new Integer[0];
+
+    public static int[] toInts(String str, String delimiter) {
+        String[] split = str.split(delimiter);
+        int[] result = new int[split.length];
+        for (int i = 0; i < split.length; i++)
+            result[i] = Integer.parseInt(split[i]);
+        return result;
+    }
+
+    public static double[] toDoubles(String str, String delimiter) {
+        String[] split = str.split(delimiter);
+        double[] result = new double[split.length];
+        for (int i = 0; i < split.length; i++)
+            result[i] = Double.parseDouble(split[i]);
+        return result;
+    }
+
+    public static byte[] toBytes(String str, String delimiter) {
+        String[] split = str.split(delimiter);
+        byte[] result = new byte[split.length];
+        for (int i = 0; i < split.length; i++)
+            result[i] = (byte) Integer.parseInt(split[i]);
+        return result;
+    }
+
+    public static String merge(String delimiter, Collection value) {
+        if (value == null || value.size() == 0)
+            return null;
+
+        StringBuilder result = new StringBuilder(value.size() * 5);
+        for (Object id : value)
+            result.append(id).append(delimiter);
+
+        return result.substring(0, result.length() - 1);
+    }
+
+    public static String merge(String delimiter, Object... value) {
+        if (value == null || value.length == 0)
+            return null;
+
+        StringBuilder result = new StringBuilder(value.length * 5);
+        for (Object id : value)
+            result.append(id).append(delimiter);
+
+        return result.substring(0, result.length() - 1);
+    }
+
+    public static String merge(String delimiter, int... value) {
+        if (value == null || value.length == 0)
+            return null;
+
+        StringBuilder result = new StringBuilder(value.length * 5);
+        for (int id : value)
+            result.append(id).append(delimiter);
+
+        return result.substring(0, result.length() - 1);
+    }
+
+    public static int[] toInts(Integer[] src) {
+        if (src == null || src.length == 0)
+            return EMPTY;
+
+        int[] dest = new int[src.length];
+        for (int i = 0; i < src.length; i++)
+            dest[i] = src[i];
+        return dest;
+    }
+
+    public static Integer[] toInts(int[] src) {
+        if (src == null || src.length == 0)
+            return EMPTY_;
+
+        Integer[] dest = new Integer[src.length];
+        for (int i = 0; i < src.length; i++)
+            dest[i] = src[i];
+        return dest;
+    }
+
+    public static Integer parseInt(String num) {
+        return parseInt(num, null);
+    }
+
+    public static Integer parseInt(String num, Integer defVal) {
+        if (isBlank(num))
+            return defVal;
+        try {
+            return Integer.parseInt(num);
+        } catch (NumberFormatException e) {
+            return defVal;
+        }
+    }
+
+    public static String toUnderline(String str) {
+        StringBuilder result = new StringBuilder(str.length() + 4);
+        char[] chars = str.toCharArray();
+
+        result.append(Character.toLowerCase(chars[0]));
+
+        for (int i = 1; i < chars.length; i++) {
+            char c = chars[i];
+            if (Character.isUpperCase(c))
+                result.append('_').append(Character.toLowerCase(c));
+            else
+                result.append(c);
+        }
+        return result.toString();
+    }
+
+    public static String subPrefix(String str, String prefix) {
+        if (str != null && str.startsWith(prefix))
+            str = str.substring(prefix.length());
+        return str;
+    }
+
+    public static Map newMap(Object... entrys) {
+        Map result = new HashMap((int) (entrys.length / 1.5) + 1);
+        for (int i = 0; i < entrys.length; )
+            result.put(entrys[i++], entrys[i++]);
+        return result;
+    }
+
+    public static boolean isNotBlank(String str) {
+        return !isBlank(str);
+    }
+
+    public static boolean isBlank(String str) {
+        return str == null || str.length() == 0 || str.trim().length() == 0;
+    }
+
+    public static <T> T getDefault(T value, T defaultValue) {
+        return value != null ? value : defaultValue;
+    }
+
+    public static String leftPad(String str, int size, char ch) {
+        if(str ==null){
+            str = "";
+        }
+        int length = str.length();
+        int pads = size - length;
+        if (pads > 0) {
+            char[] result = new char[size];
+            str.getChars(0, length, result, pads);
+            while (pads > 0)
+                result[--pads] = ch;
+            return new String(result);
+        }
+        return str;
+    }
+    public static String leftTrip(String str,  char ch) {
+        if(str==null ){
+            return null;
+        }
+        int index = 0;
+        while (index < str.length() && str.charAt(index) == ch) {
+            index++;
+        }
+        String result = str.substring(index);
+        return result;
+    }
+
+    public static int[] toArray(Collection<Integer> list) {
+        if (list == null || list.isEmpty())
+            return null;
+
+        int[] result = new int[list.size()];
+        int i = 0;
+        for (Integer e : list) {
+            if (e != null)
+                result[i++] = e;
+        }
+        return result;
+    }
+
+    public static Set<Integer> toSet(int... num) {
+        if (num == null || num.length == 0) {
+            return Collections.EMPTY_SET;
+        }
+        Set<Integer> result;
+        if (num.length <= 3) {
+            result = new TreeSet<>();
+        } else {
+            result = new HashSet<>(num.length << 1);
+        }
+        for (int i : num) {
+            result.add(i);
+        }
+        return result;
+    }
+
+    public static boolean isNum(String val) {
+        if (isBlank(val)) {
+            return false;
+        }
+        int sz = val.length();
+        for (int i = 0; i < sz; i++) {
+            if (!Character.isDigit(val.charAt(i))) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    public static String getStackTrace(final Throwable throwable) {
+        final StringWriter sw = new StringWriter(7680);
+        final PrintWriter pw = new PrintWriter(sw, true);
+        throwable.printStackTrace(pw);
+        return sw.getBuffer().toString();
+    }
+
+    private static final char[] hexCode = "0123456789abcdef".toCharArray();
+
+    public static String bytes2Hex(byte[] bytes) {
+        char[] hex = new char[bytes.length << 1];
+        for (int j = 0, i = 0; i < bytes.length; i++) {
+            byte b = bytes[i];
+            hex[j++] = hexCode[(b >> 4) & 0xF];
+            hex[j++] = hexCode[(b & 0xF)];
+        }
+        return new String(hex);
+    }
+
+    public static byte[] hex2Bytes(String hex) {
+        final int len = hex.length();
+
+        if (len % 2 != 0) {
+            throw new IllegalArgumentException("hexBinary needs to be even-length: " + hex);
+        }
+
+        byte[] out = new byte[len >> 1];
+        for (int i = 0; i < len; i += 2) {
+
+            int h = hexToBin(hex.charAt(i));
+            int l = hexToBin(hex.charAt(i + 1));
+            if (h == -1 || l == -1) {
+                throw new IllegalArgumentException("contains illegal character for hexBinary: " + hex);
+            }
+            out[i >> 1] = (byte) (h * 16 + l);
+        }
+        return out;
+    }
+
+    public static int hexToBin(char ch) {
+        if ('0' <= ch && ch <= '9') {
+            return ch - '0';
+        }
+        if ('A' <= ch && ch <= 'F') {
+            return ch - ('A' - 10);
+        }
+        if ('a' <= ch && ch <= 'f') {
+            return ch - ('a' - 10);
+        }
+        return -1;
+    }
+}
\ No newline at end of file
--
Gitblit v1.9.3