zoukankan      html  css  js  c++  java
  • 常用的一些开源小工具 之 StringUtils

    一、判断字符串是否为空

    old:

    if (null == str || str.isEmpty()) {
    
    }

    使用 StringUtils ,上面代码可以替换下面这样:

    if (StringUtils.isEmpty(str)) {
    
    }

    StringUtils  内部还有一个方法 isBlank,也是用来判断字符串是否为空,两个方法比较相近,比较搞混,主要区别如下:

    // 如果字符串都是空格的话,
    StringUtils.isBlank(" ")       = true;
    StringUtils.isEmpty(" ")       = false

    二、字符串固定长度

    这个通常用于字符串需要固定长度的场景,比如需要固定长度字符串作为流水号,若流水号长度不足,,左边补 0 。

    // 字符串固定长度 8位,若不足,往左补 0
    StringUtils.leftPad("test", 8, "0");

    另外还有一个 StringUtils#rightPad,这个方法与上面方法正好相反。

    StringUtils.rightPad("test", 8, "0");

    三、字符串关键字替换

    StringUtils 提供一些列的方法,可以替换某些关键字:

    // 默认替换所有关键字
    StringUtils.replace("aba", "a", "z")     // "zbz";
    // 替换关键字,仅替换一次
    StringUtils.replaceOnce("aba", "a", "z")  // "zba";
    // 使用正则表达式替换
    StringUtils.replacePattern("ABCabc123", "[^A-Z0-9]+", "")   // "ABC123";

    四、字符串拼接

    字符串拼接是个常见的需求,简单办法使用 StringBuilder 循环遍历拼接:

    String[] array = new String[]{"test", "1234", "5678"};
    StringBuilder stringBuilder = new StringBuilder();
    
    for (String s : array) {
        stringBuilder.append(s).append(";");
    }
    // 防止最终拼接字符串为空 
    if (stringBuilder.length() > 0) {
        stringBuilder.deleteCharAt(stringBuilder.length() - 1);
    }
    System.out.println(stringBuilder.toString());

    上面业务代码不太难,但是需要注意一下上面这段代码非常容易出错,容易抛出 StringIndexOutOfBoundsException

    这里我们可以直接使用以下方法获取拼接之后字符串:

    StringUtils.join(["a", "b", "c"], ",")   // "a,b,c"

    StringUtils 只能传入数组拼接字符串,不过我比较喜欢集合拼接,所以再推荐下 Guava 的 Joiner

    String[] array = new String[]{"test", "1234", "5678"};
    List<String> list=new ArrayList<>();
    list.add("test");
    list.add("1234");
    list.add("5678");
    StringUtils.join(array, ",");
    
    // 逗号分隔符,跳过 null
    Joiner joiner=Joiner.on(",").skipNulls();
    joiner.join(array);
    joiner.join(list);
    System.out.println(Joiner.on(",").withKeyValueSeparator("=").join(ImmutableMap.of(array, list)));
    System.out.println(ImmutableMap.of(array, list));
     

    五、字符串拆分

    StringUtils.split("a..b.c", '.')   = ["a", "b", "c"]
    StringUtils.splitByWholeSeparatorPreserveAllTokens("a..b.c", ".")= ["a","", "b", "c"]

    ps:注意以上两个方法区别。

    StringUtils 拆分之后得到是一个数组,我们可以使用 Guava 的

    Splitter splitter = Splitter.on(",");
    // 返回是一个 List 集合,结果:[ab, , b, c]
    splitter.splitToList("ab,,b,c");
    // 忽略空字符串,输出结果 [ab, b, c]
    splitter.omitEmptyStrings().splitToList("ab,,b,c")
  • 相关阅读:
    Http请求头与响应头
    获取ip位置方法
    简单的Http Server实现
    HTTP
    long、int与byte数组之间的相互转换
    GlusterFS简单配置
    创建线程池
    网络编程socket
    面向对象-进阶篇
    面向对象-初级篇
  • 原文地址:https://www.cnblogs.com/alomsc/p/12887132.html
Copyright © 2011-2022 走看看