Guava学习(九):字符串处理

Guava提供了一些字符串处理的类,Joiner:连接器(字符串连接用的),Splitter:拆分器(字符串拆分用的),CharMatcher:字符匹配器(字符匹配用的),CaseFormat:大小写格式。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用例子:


/**
 * @author CodeRush
 * @date 2019/8/12 22:48
 */
public class StringToolsTest {

    public static void main(String[] args) {

        //region Joiner:连接器
        //创建一个连接器,并指定连接字符串
        Joiner joiner = Joiner.on(";");
        //连接多个对象
        String joinerStr = joiner.join(1, "aa", true);
        System.out.println(joinerStr);
        //连接数组中的元素,【注意:如果有null的话会报空指针一场】
        String joinArrayStr = joiner.join(new Object[]{"a", "b"});
        System.out.println(joinArrayStr);
        //连接集合类
        ArrayList<String> list = Lists.newArrayList("aa", "bb", null);
        try {
            String joinListStr = joiner.join(list);
            System.out.println(joinListStr);
        } catch (NullPointerException e) {
            System.out.println("报空指针异常了,连接器没有指定处理null值");
        }
        /**处理null值**/
        //1、跳过null
        String joinListSkipNullStr = joiner.skipNulls().join(list);
        System.out.println(joinListSkipNullStr);
        //2、使用指定字符串替换null
        String joinListUseForNullStr = joiner.useForNull("[null]").join(list);
        System.out.println(joinListUseForNullStr);

        Appendable appendable = new StringBuffer("result:");
        try {
            //连接器链接指定数组或集合并把链接结果加到Appendable中
            Appendable appendableResult = joiner.appendTo(appendable, Sets.newHashSet("kk", "123", "haha"));
            System.out.println(appendableResult.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }

        StringBuilder stringBuilder = joiner.skipNulls().appendTo(new StringBuilder("sb result->"), 1, 2, 3, 5.5);
        System.out.println(stringBuilder);

        //链接Map键值:用MapJoiner
        Joiner.MapJoiner mapJoiner = Joiner.on("^_^")
                .withKeyValueSeparator("=");
        String mapJoinStr = mapJoiner
                .useForNull("[null]")
                .join(ImmutableMap.of("a", 1, "b", 2));
        System.out.println(mapJoinStr); //a=1^_^b=2
        //endregion

        //region Splitter:拆分器
        Splitter splitter = Splitter.on(",")
                .omitEmptyStrings() //或略空字符串
                .trimResults(); //去掉每个元素两边的空格
        Iterable<String> splitIterable = splitter.split(" aa ,|  bb  |,  cc ,dd ,");
        System.out.println(splitIterable);
        for (String str : splitIterable) {
            System.out.println("|" + str + "|");
        }

        //按固定长度拆分
        Splitter fixedLengthSplitter = Splitter.fixedLength(2);
        Iterable<String> fixedLenSplitIterable = fixedLengthSplitter.split("112233555");
        System.out.println(fixedLenSplitIterable);
        fixedLenSplitIterable.forEach(System.out::println);

        //限制只拆分出几个元素
        Splitter limitSplitter = Splitter.on(";").limit(2);
        Iterable<String> limitSplitIterable = limitSplitter.split("1;2;3;4;5");
        System.out.println(limitSplitIterable);
        limitSplitIterable.forEach(System.out::println);

        //on里面也可以传递正则表达式,等价于Splitter.onPattern()
        //trimResults方法可以传递一个匹配器,去掉匹配器前后匹配到的内容
        //endregion

        //region CharMatcher:字符匹配器
        String containDigitStr = "ab123c1.0dd";
        //只保留数字
        String digitRetainStr = CharMatcher.DIGIT.retainFrom(containDigitStr);
        System.out.println(digitRetainStr);
        //移除数字
        String digitRemoveStr = CharMatcher.DIGIT.removeFrom(containDigitStr);
        System.out.println(digitRemoveStr);
        //替换数字为制定更多字符串
        String digitReplaceStr = CharMatcher.DIGIT.replaceFrom(containDigitStr, "*");
        System.out.println(digitReplaceStr);
        String javaDigitRemoveStr = CharMatcher.JAVA_DIGIT.removeFrom(containDigitStr);
        System.out.println(javaDigitRemoveStr);
        //去掉两边空格,并把中间联系的空格替换成字符‘-’
        String trimAndCollStr = CharMatcher.WHITESPACE.trimAndCollapseFrom(" |abc   def|  ", '-');
        System.out.println(trimAndCollStr);
        System.out.println(CharMatcher.JAVA_LOWER_CASE.collapseFrom("123abFFDCa", '-'));
        System.out.println(CharMatcher.inRange('A', 'a').retainFrom("123abADg"));
        //endregion

        //region Charsets:字符编码常量类
        System.out.println(Charsets.UTF_8);
        System.out.println(Charsets.ISO_8859_1);
        //endregion

        //region CaseFormat:字符格式,如大写骆驼,小写骆驼。。。
        System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, "AbcDef"));
        System.out.println(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_HYPHEN, "abcEfgHiJ"));
        //endregion

    }
}

输出结果:

=============Joiner:连接器=============
1;aa;true
a;b
报空指针异常了,连接器没有指定处理null值
aa;bb
aa;bb;[null]
result:kk;123;haha
sb result->1;2;3;5.5
a=1^_^b=2
=============Splitter:拆分器=============
[aa, |  bb  |, cc, dd]
|aa|
||  bb  ||
|cc|
|dd|
[11, 22, 33, 55, 5]
11
22
33
55
5
[1, 2;3;4;5]
1
2;3;4;5
=============CharMatcher:字符匹配器=============
12310
abc.dd
ab***c*.*dd
abc.dd
|abc-def|
123-FFDC-
aAD
=============Charsets:字符编码常量类=============
UTF-8
ISO-8859-1
=============CaseFormat:字符格式=============
ABC_DEF
abc-efg-hi-j
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值