Java中 String工具类

简介: Java中 String工具类

public class StringUtil {

/**
 * 判断字符串是否   不为NotEmpty(!null或空值)
 *
 * @param param 待检查对象
 * @return boolean 返回的布尔值
 */
public static boolean isNotNullEmpty(String param) {
    return !isNullOrEmpty(param);
}

/**
 * 判断字符串是否为   NotEmpty(!null或空值)
 *
 * @param param
 * @return
 */
public static boolean isNullOrEmpty(String param) {
    if (StringUtils.isEmpty(param)) {
        return true;
    }
    return StringUtils.isBlank(param);
}

/**
 * 字符串长度
 * 中文2个字符,英文1个字符
 *
 * @param value
 * @return
 */
public static int length(String value) {
    int valueLength = 0;
    String chinese = "[\u4e00-\u9fa5]";
    for (int i = 0, j = value.length(); i < j; i++) {
        String temp = value.substring(i, i + 1);
        if (temp.matches(chinese)) {
            valueLength += 2;
        } else {
            valueLength += 1;
        }
    }
    return valueLength;
}

/**
 * 字符串截取
 *
 * @param str
 * @param start  开始
 * @param length 长度
 * @return
 */
public static final String substr(String str, Integer start, Integer length) {
    if (length > 0) {
        return str.substring(start, length);
    }
    return str.substring(start);
}

private static Pattern replaceBlank = Pattern.compile("\\s*|\t|\r|\n");

/**
 * 去除所有空格,制表,换行
 *
 * @param str
 * @return
 */
public static String replaceBlank(String str) {
    String dest = "";
    if (str != null) {
        Matcher m = replaceBlank.matcher(str);
        dest = m.replaceAll("");
    }
    return dest;
}

/**
 * 特殊字符
 */
private static String patternEx = "[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?_]";

/**
 * 判断特殊字符
 * https://blog.csdn.net/you23hai45/article/details/20163459
 *
 * @param str
 * @return
 * @throws PatternSyntaxException
 * @Title : FilterStr
 * @Type : FilterString
 * @Description : 判断特殊字符
 */
public static String filterStr(String str) throws PatternSyntaxException {
    Pattern pat = Pattern.compile(patternEx);
    Matcher mat = pat.matcher(str);

    /**
     * 返回替换结果
     */
    return mat.replaceAll("").trim();
}

/**
 * 判断 String[] 是否为null
 *
 * @param str
 * @return
 */
public static boolean isArrNotNull(String[] str) {
    return str != null && str.length > 0;
}

public static String toString(Object obj) {
    return toString(obj, "");
}

public static String toString(Object obj, String defaults) {
    String s = String.valueOf(obj);
    if ("null".equals(s)) {
        return defaults;
    }
    return s;
}

public static String toString(char obj[]) {
    return String.valueOf(obj);
}

public static String toString(boolean obj) {
    return String.valueOf(obj);
}

public static String toString(char obj) {
    return String.valueOf(obj);
}

public static String toString(int obj) {
    return String.valueOf(obj);
}

public static String toString(long obj) {
    return String.valueOf(obj);
}

public static String toString(float obj) {
    return String.valueOf(obj);
}

public static String toString(double obj) {
    return String.valueOf(obj);
}

public static String toString(Long obj) {
    return toString(obj, "0");
}

public static String toString(Long obj, String defaults) {
    if (NumberUtil.isLongNull(obj)) {
        return defaults;
    }
    return String.valueOf(obj);
}

public static String toString(Integer obj) {
    return toString(obj, "0");
}

public static String toString(Integer obj, String defaults) {
    if (NumberUtil.isIntegerNull(obj)) {
        return defaults;
    }
    return String.valueOf(obj);
}

public static String toString(Float obj) {
    return toString(obj, "0");
}

public static String toString(Float obj, String defaults) {
    if (NumberUtil.isFloatNull(obj)) {
        return defaults;
    }
    return String.valueOf(obj);
}

public static String toString(Double obj) {
    return toString(obj, "0");
}

public static String toString(Double obj, String defaults) {
    if (NumberUtil.isDoubleNull(obj)) {
        return defaults;
    }
    return String.valueOf(obj);
}

public static String toString(BigDecimal obj) {
    return toString(obj, "0");
}

public static String toString(BigDecimal obj, String defaults) {
    if (!BigDecimalUtil.isNotNull(obj)) {
        return defaults;
    }
    return String.valueOf(obj);
}

public static String toString(String obj) {
    return toString(obj, "");
}

public static String toString(String obj, String defaults) {
    if (isNullOrEmpty(obj)) {
        return "";
    }
    return obj;
}

private static final char[] DEFAULT_ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyz".toCharArray();
private static final char[] NUMBER_ALPHABET = "0123456789".toCharArray();

/**
 * 随机数
 *
 * @param size 长度
 * @return
 */
public static String randomNanoId(int size) {
    return NanoId.randomNanoId(null, DEFAULT_ALPHABET, size);
}

/**
 * 随机数 32位
 *
 * @return
 */
public static String randomNanoId() {
    return NanoId.randomNanoId(null, DEFAULT_ALPHABET, 32);
}

/**
 * 随机数
 *
 * @param size 长度
 * @return
 */
public static String randomNumber(int size) {
    return NanoId.randomNanoId(null, NUMBER_ALPHABET, size);
}

/**
 * 拆分 逗号 数组,并去重
 *
 * @param str
 * @return
 */
public static Optional<List<String>> toList(String str) {
    return toList(str, ",");
}

/**
 * 拆分 逗号 数组,并去重
 *
 * @param str
 * @return
 */
public static Optional<List<String>> toList(String str, String separator) {
    String s = StringUtils.trimToEmpty(str);
    if (StringUtils.isBlank(s)) {
        return Optional.empty();
    }

// if (!StringUtils.contains(s, ",")) {
// return Optional.ofNullable(Lists.newArrayList(s));
// }

    List<String> strings = Splitter.on(separator).trimResults().omitEmptyStrings().splitToList(str);
    if (null == strings || strings.size() <= 0) {
        return Optional.empty();
    }
    return Optional.ofNullable(strings.stream().distinct().collect(Collectors.toList()));
}

/**
 * 解析后,用 , 号分割,拼接(连接)成 字符串,并跳过 null 值
 *
 * @param list
 * @return
 */
public static String parse(List<String> list) {
    return parse(list, ",");
}

/**
 * 解析后,用 指定 符号分割,拼接(连接)成 字符串,并跳过 null 值
 *
 * @param list
 * @return
 */
public static String parse(List<String> list, String separator) {
    return Joiner.on(separator).skipNulls().join(list);
}

/**
 * 是否为 null 或者 空字符
 *
 * @param param
 * @return
 */
public static boolean isBlank(String param) {
    return StringUtils.isBlank(param);
}

/**
 * 不为 null 或者 空字符
 *
 * @param param
 * @return
 */
public static boolean isNotBlank(String param) {
    return StringUtils.isNotBlank(param);
}

/**
 * 解析并填充
 *
 * @param source , 号 隔开的,字符串
 * @param map
 * @return
 */
public static String parseToFill(String source, Map<String, String> map) {

    return StringUtil.parseToFill(source,map,",");
}

/**
 * 解析并填充
 *
 * @param source , 号 隔开的,字符串
 * @param map
 * @return
 */
public static String parseToFill(String source, Map<String, String> map, String separator) {
    if (StringUtils.isBlank(source)) {
        return "";
    }
    if (map.isEmpty()) {
        return "";
    }
    Optional<List<String>> strings = toList(source,separator);
    if (strings.isPresent()) {
        StringBuffer sb = new StringBuffer();
        int i = 0;
        for (String str : strings.get()) {
            if (map.containsKey(str)) {
                if (i > 0) {
                    sb.append(",");
                }
                sb.append(map.get(str));
                i++;
            }
        }
        if(StringUtils.isEmpty(sb.toString())){
            return "";
        }
        if(",".equals( sb.toString().substring(sb.toString().length() - 1))){
            return org.springframework.util.StringUtils.isEmpty(sb.toString()) ? null : (sb.toString().substring(0, sb.toString().length() - 1));
        }else {
            return sb.toString();
        }

    }
    return "";
}

/**
 * 格式化文本, {} 表示占位符 此方法只是简单将占位符 {} 按照顺序替换为参数 如果想输出 {} 使用 \\转义 { 即可,如果想输出 {} 之前的 \ 使用双转义符 \\\\ 即可 例:
 * 通常使用:format("this is {} for {}", "a", "b") =》 this is a for b 转义{}
 * : format("this is \\{} for {}", "a", "b") =》 this is \{} for a 转义\
 * : format("this is \\\\{} for {}", "a", "b") =》 this is \a for b
 *
 * @param template – 文本模板,被替换的部分用 {} 表示,如果模板为null,返回"null"
 * @param params   – 参数值
 * @return 格式化后的文本,如果模板为null,返回"null"
 */
public static String format(CharSequence template, Object... params) {
    return StrUtil.format(template, params);
}

public static String trim(String str) {
    return StringUtils.trimToEmpty(str);
}

}

相关文章
|
3天前
|
安全 Java 编译器
Java中String、StringBuilder和StringBuffer的区别
Java中String、StringBuilder和StringBuffer的区别
|
6天前
|
存储 缓存 安全
【 Java中String源码分析(JVM视角你不来看看?】
【 Java中String源码分析(JVM视角你不来看看?】
13 0
|
7天前
|
存储 算法 安全
Java工具类
Java工具类
28 5
Java工具类
|
12天前
|
Java
Java String类型转换成Date日期类型
Java String类型转换成Date日期类型
|
13天前
|
Java 索引
Java String应用与开发
Java String应用与开发
22 0
|
17天前
Swagger2异常:java.lang.NumberFormatException: For input string: ““
Swagger2异常:java.lang.NumberFormatException: For input string: ““
20 1
|
17天前
|
缓存 安全 Java
【Java基础】String、StringBuffer和StringBuilder三种字符串对比
【Java基础】String、StringBuffer和StringBuilder三种字符串对比
9 0
|
17天前
|
存储 缓存 Java
|
18天前
|
Java API 索引
Java基础&API(2) String、StringBuilder详解
Java基础&API(2) String、StringBuilder详解
|
18天前
|
安全 Java API
Java 的 String StringBuilder StringBuffer(下)
Java 的 String StringBuilder StringBuffer
14 0