Java中 String工具类

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 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);
}

}

相关文章
|
4月前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
49 0
java基础(13)String类
|
25天前
|
存储 JavaScript Java
Java 中的 String Pool 简介
本文介绍了 Java 中 String 对象及其存储机制 String Pool 的基本概念,包括字符串引用、构造方法中的内存分配、字符串文字与对象的区别、手工引用、垃圾清理、性能优化,以及 Java 9 中的压缩字符串特性。文章详细解析了 String 对象的初始化、内存使用及优化方法,帮助开发者更好地理解和使用 Java 中的字符串。
Java 中的 String Pool 简介
|
1月前
|
缓存 安全 Java
java 为什么 String 在 java 中是不可变的?
本文探讨了Java中String为何设计为不可变类型,从字符串池的高效利用、哈希码缓存、支持其他对象的安全使用、增强安全性以及线程安全等方面阐述了不可变性的优势。文中还通过具体代码示例解释了这些优点的实际应用。
java 为什么 String 在 java 中是不可变的?
|
3月前
|
Java 测试技术 开发者
Java零基础-indexOf(String str)详解!
【10月更文挑战第14天】Java零基础教学篇,手把手实践教学!
128 65
|
2月前
|
JSON Java 关系型数据库
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应数据库中json数据类型,更新时报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
118 4
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
|
5月前
|
Kubernetes jenkins 持续交付
从代码到k8s部署应有尽有系列-java源码之String详解
本文详细介绍了一个基于 `gitlab + jenkins + harbor + k8s` 的自动化部署环境搭建流程。其中,`gitlab` 用于代码托管和 CI,`jenkins` 负责 CD 发布,`harbor` 作为镜像仓库,而 `k8s` 则用于运行服务。文章具体介绍了每项工具的部署步骤,并提供了详细的配置信息和示例代码。此外,还特别指出中间件(如 MySQL、Redis 等)应部署在 K8s 之外,以确保服务稳定性和独立性。通过本文,读者可以学习如何在本地环境中搭建一套完整的自动化部署系统。
77 0
|
25天前
|
存储 Java
Java 11 的String是如何优化存储的?
本文介绍了Java中字符串存储优化的原理和实现。通过判断字符串是否全为拉丁字符,使用`byte`代替`char`存储,以节省空间。具体实现涉及`compress`和`toBytes`方法,前者用于尝试压缩字符串,后者则按常规方式存储。代码示例展示了如何根据配置决定使用哪种存储方式。
|
2月前
|
Java
在Java中如何将基本数据类型转换为String
在Java中,可使用多种方法将基本数据类型(如int、char等)转换为String:1. 使用String.valueOf()方法;2. 利用+运算符与空字符串连接;3. 对于数字类型,也可使用Integer.toString()等特定类型的方法。这些方法简单高效,适用于不同场景。
63 7
|
3月前
|
Java 测试技术 开发者
Java零基础-indexOf(String str)详解!
【10月更文挑战第13天】Java零基础教学篇,手把手实践教学!
64 1
|
3月前
|
安全 Java 测试技术
Java零基础-StringBuffer 类详解
【10月更文挑战第9天】Java零基础教学篇,手把手实践教学!
64 2