Java中 String工具类

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

}

相关文章
|
2月前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
39 0
java基础(13)String类
|
28天前
|
Java 测试技术 开发者
Java零基础-indexOf(String str)详解!
【10月更文挑战第14天】Java零基础教学篇,手把手实践教学!
111 65
|
3月前
|
Kubernetes jenkins 持续交付
从代码到k8s部署应有尽有系列-java源码之String详解
本文详细介绍了一个基于 `gitlab + jenkins + harbor + k8s` 的自动化部署环境搭建流程。其中,`gitlab` 用于代码托管和 CI,`jenkins` 负责 CD 发布,`harbor` 作为镜像仓库,而 `k8s` 则用于运行服务。文章具体介绍了每项工具的部署步骤,并提供了详细的配置信息和示例代码。此外,还特别指出中间件(如 MySQL、Redis 等)应部署在 K8s 之外,以确保服务稳定性和独立性。通过本文,读者可以学习如何在本地环境中搭建一套完整的自动化部署系统。
70 0
|
28天前
|
Java 测试技术 开发者
Java零基础-indexOf(String str)详解!
【10月更文挑战第13天】Java零基础教学篇,手把手实践教学!
41 1
|
1月前
|
安全 Java 测试技术
Java零基础-StringBuffer 类详解
【10月更文挑战第9天】Java零基础教学篇,手把手实践教学!
26 2
|
1月前
|
IDE Java 开发工具
Java“未封闭的 String 表达式”怎么解决
要解决Java中的“未封闭的 String 表示”问题,需检查并修正字符串字面量,确保每个字符串被正确地用双引号括起来。若字符串跨越多行,可使用字符串连接操作符(+)或引入文本块(JDK 13 及以上版本)。这能帮助避免语法错误,并使代码更整洁易读。
|
1月前
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
107 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
|
1月前
|
存储 安全 Java
【一步一步了解Java系列】:认识String类
【一步一步了解Java系列】:认识String类
25 2
|
1月前
|
Java
Java 些许公共工具类
Java 些许公共工具类
15 1
|
2月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)