Guava使用(一)Strings扩展

Joiner

字符串连接

// 跳过空值
 String skipNulls = Joiner.on(",")
                .skipNulls()
                .join("张三", "李四", "王五");
        System.out.println(skipNulls);//张三,李四,王五

        String useNUll = Joiner
                .on(",")
                .useForNull("null") //空替换
                .join("张三",null, "李四", "王五");
        System.out.println(useNUll);//张三,null,李四,王五

Splitter

作用:字符串分隔
原因:JDK自带的split()函数,会默认忽略尾部的分隔符,StringTokenizer 会用五个空字符代替。

 String[] split = ",a,,b,".split(","); // "", "a", "", "b"
Iterable<String> split1 = Splitter.on(',')
                .trimResults()
                .omitEmptyStrings()
                .split("foo,bar,,   qux");
        System.out.println(split1.toString()); //[foo, bar, qux]
// 任意字符进行拆分
Iterable<String> split1 = Splitter.on(CharMatcher.anyOf(",;."))
                .trimResults()
                .omitEmptyStrings()
                .split("foo,bar,,   qux;23.,s");
API 作用 示例
Splitter.on(char) Splitter.on(‘;’)
Splitter.on(CharMatcher) 以任意字符进行拆分 Splitter.on(CharMatcher.BREAKING_WHITESPACE) Splitter.on(CharMatcher.anyOf(“;,.”))
Splitter.on(String) Splitter.on(“, “)
Splitter.on(Pattern)
Splitter.onPattern(String) Splitter.onPattern(“\r?\n”)
Splitter.fixedLength(int) Splitter.fixedLength(3)
方法 描述 示例
omitEmptyStrings() Automatically omits empty strings from theresult. Splitter.on(‘,’).omitEmptyStrings().split(“a,,c,d”)returns “a”, “c”, “d”
trimResults() Trims whitespace from the results; equivalent to trimResults(CharMatcher.WHITESPACE). Splitter.on(‘,’).trimResults().split(“a, b, c, d”) returns “a”, “b”, “c”, “d”
trimResults(CharMatcher) Trims characters matching the specified CharMatcher from results. Splitter.on(‘,’).trimResults(CharMatcher.is(‘‘)).split(“_a ,_b ,c__”) returns “a “, “b_ “, “c”.
limit(int) Stops splitting after the specified number of strings have beenreturned. Splitter.on(‘,’).limit(3).split(“a,b,c,d”) returns “a”, “b”, “c,d”

其它split方法

  • splitToList
  • splitToStream

CharMatcher

提供了字符串替换等操作
CharMatcher.is(‘a’).replaceFrom(“yaha”, “oo”) // return yoohoo
如果要调用的字符串只有一个字符,最好直接使用 replaceFrom(CharSequence, char)

Charsets

    bytes = string.getBytes(Charsets.UTF_8);

CaseFormat

字符格式化

   @Test
    public void testCaseFormat () {
 //       小驼峰 constantName
        CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, "CONSTANT_NAME");
//        连接 constant-name
        CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_HYPHEN, "CONSTANT_NAME");
//         constant_name
        CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_UNDERSCORE, "CONSTANT_NAME");
//           大驼峰 ConstantName
        CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, "CONSTANT_NAME");
//          CONSTANT_NAME
        CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_UNDERSCORE, "CONSTANT_NAME");
    }

文章作者: EvanZhou
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EvanZhou !
 上一篇
Guava使用(二)哈希 Guava使用(二)哈希
Guava包为什么要提供hashjava内置的hashcode算法被限制为32位的,而且算法与数据之间耦合严重,无法进行算法的替换。虽然JDK内置的hashcode算法快,但是碰撞严重在简单的散列表中可以通过再hash解决这个问题,但是gu
2020-01-16
下一篇 
整合shiro问题--数据库事务失效 整合shiro问题--数据库事务失效
spring事务管理spring事务管理支持两种类型。一种是编程式的事务类型,另外一种是声明式的事务类型。但是无论哪一种底层都采用spring事务管理器进行统一管理。spring事务管理介绍我之前写的还算比较详细:spring事务管理介绍
2019-12-29
  目录