StrUtils.java 7.92 KB
package com.server.utils;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author ZMS
 */
public final class StrUtils {

    /**
     * 是否是空白字符串
     *
     * @param str
     * @return
     */
    public static boolean isBlank(String str) {
        if (str == null || str.trim().length() == 0) {
            return true;
        }
        return false;
    }

    public static boolean isNotBlank(String str) {
        return !isBlank(str);
    }

    /**
     * null转换为空白字符
     *
     * @param str
     * @return
     */
    public static String null2Blank(String str) {
        if (isBlank(str)) {
            return "";
        }
        return str;
    }

    /**
     * 首字母大写
     *
     * @param str
     * @return
     */
    public static String firstUpper(String str) {
        StringBuilder ret = new StringBuilder();
        if (str != null && str.length() > 0) {
            ret.append(str.substring(0, 1).toUpperCase()).append(str.substring(1));
        }
        return ret.toString();
    }

    /**
     * 首字母小写
     *
     * @param str
     * @return
     */
    public static String firstLower(String str) {
        StringBuilder ret = new StringBuilder();
        if (str != null && str.length() > 0) {
            ret.append(str.substring(0, 1).toLowerCase()).append(str.substring(1));
        }
        return ret.toString();
    }

    /**
     * 转换为boolean
     *
     * @param str
     * @return
     */
    public static boolean parseBoolean(String str) {
        return "1".equals(str) || "true".equals(str);
    }

    /**
     * 链接字符串
     *
     * @param delimiter
     * @param strings
     * @return
     */
    public static String joinString(String delimiter, Object... strings) {
        if (strings == null || strings.length == 0) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        boolean d = false;
        for (Object s : strings) {
            if (d) {
                sb.append(delimiter);
            } else {
                d = true;
            }
            sb.append(s);
        }
        return sb.toString();
    }

    public static String joinString(String delimiter, String... strings) {
        Object[] o = new Object[strings.length];
        for (int i = 0; i < o.length; i++) {
            o[i] = strings[i];
        }
        return joinString(delimiter, o);
    }

    /**
     * 链接非空字符串
     *
     * @param delimiter
     * @param strings
     * @return
     */
    public static String joinNotEmpty(String delimiter, String... strings) {
        if (strings == null || strings.length == 0) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        boolean d = false;
        for (String s : strings) {
            if (s != null && !s.isEmpty()) {
                if (d) {
                    sb.append(delimiter);
                } else {
                    d = true;
                }
                sb.append(s);
            }
        }
        return sb.toString();
    }

    /**
     * 正则查找
     *
     * @param string
     * @param reg
     * @return
     */
    public static String[] find(String string, String reg) {
        List<String> list = new ArrayList<String>();
        Pattern p = Pattern.compile(reg);
        Matcher m = p.matcher(string);
        while (m.find()) {
            list.add(m.group());
        }
        return list.toArray(new String[list.size()]);
    }

    /**
     * 统计正则个数
     *
     * @param string
     * @param regex
     * @return
     */
    public static int countRegex(String string, String regex) {
        if (StrUtils.isBlank(string)) {
            return 0;
        }
        String[] para = StrUtils.find(string, regex);
        return para.length;
    }

    public static String jsonSafe(String str) {
        if (str == null) {
            return "";
        }
        str = str.replaceAll("\n|\r|\r\n|\n\r", "");
        str = str.replaceAll("\"|'", " ");
        str = str.trim();
        return str;
    }

    public static String formatLeftTime(long l) {
        long[] time = DateUtils.splitTime(l);
        String str = "";
        if (time[0] > 0) {
            str = str + time[0] + "day ";
        }
        if (time[1] > 0) {
            str = str + time[1] + "hour ";
        }
        if (time[2] > 0) {
            str = str + time[2] + "minute ";
        }
        if (time[3] > 0) {
            str = str + time[3] + "second ";
        }
        return str;
    }

    public static String xssSafe(String str) {
        str = str.replaceAll("<", "&lt;");
        str = str.replaceAll(">", "&gt;");
        str = str.replaceAll("\"", "&quot;");
        str = str.replaceAll("'", "&apos;");
        return str;
    }

    public static boolean isWord(String str) {
        if (str == null) {
            return false;
        }
        return str.matches("[a-zA-Z_0-9]+");
    }

    public static boolean isNumber(String str) {
        return str != null && str.matches("[\\-\\+]?[0-9]*\\.?[0-9]+");
    }

    public static boolean isInteger(String str) {
        return str != null && str.matches("[\\-\\+]?[0-9]+");
    }

    public static String join(String[] array, String token) {
        if (array == null || array.length == 0) {
            return "";
        }
        StringBuilder sb = new StringBuilder(array[0]);
        for (int i = 1; i < array.length; i++) {
            sb.append(token);
            sb.append(array[i]);
        }
        return sb.toString();
    }

    public static boolean requireLength(String str, int min, int max) {
        return str != null && str.length() >= min && str.length() <= max;
    }

    public static String firstLowerCase(String str) {
        return str.substring(0, 1).toLowerCase() + str.substring(1);
    }

    public static boolean isEmail(String str) {
        return str != null && str.matches("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
    }

    public static boolean isMobilePhone(String str) {
        return str != null && str.matches("\\d{11}");
    }

    public static String reverse(String str) {
        return new StringBuilder(str).reverse().toString();
    }

    /**
     * 随机固定长度的数字
     *
     * @param length
     * @return
     */
    public static String randomNumber(int length) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < length; i++) {
            sb.append(RandomUtils.random(10));
        }
        return sb.toString();
    }


    /**
     * 随机固定长度
     *
     * @param length
     * @return
     */
    public static String randomString(int length) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < length; i++) {
            int val = RandomUtils.random(36);
            if (val < 10) {
                sb.append(val);
            } else {
                char c = (char) ('a' + (val - 10));
                sb.append(c);
            }
        }
        return sb.toString();
    }

    public static String formatPrice(double price) {
        return formatDouble(price, 2);
    }

    public static String formatDouble(double num, int scale) {
        BigDecimal bigDecimal = new BigDecimal(num);
        bigDecimal = bigDecimal.setScale(scale, RoundingMode.HALF_UP);
        num = Double.parseDouble(bigDecimal.toPlainString());
        int value = new Double(num).intValue();
        if (num - value < Math.pow(10, -scale)) {
            return String.valueOf(value);
        }
        return String.valueOf(num);
    }

    public static boolean isIpV4Address(String str) {
        String reg = "([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}";
        return str != null && str.matches(reg);
    }

    public static String uuid() {
        return UUID.randomUUID().toString().replace("-", "");
    }
}