guava--应用篇(一)字符串操作--splitter,joiner, Strings, Objects

guava-docs:guavaApi

目录

guava-docs:guavaApi

Splitter: 拆分器

       1.   构建splitter:

       2. splitter 是final修饰的 不可变的

       3. split运用

       4. splitter 添加筛选条件

Joiner: 连接器

  Strings:

Objects:


Splitter: 拆分器

       1.   构建splitter:

                  Splitter.on(String str): splitter.on(" ; ")

                   Splitter.onPattern(): 根据正则构建拆分

                   Splitter.fixedLength(int ) : 固定长度

       2. splitter 是final修饰的 不可变的

public final class Splitter extends Object

       3. split运用

     Iterable<String> split1 = splitByComma.split("aa,bb,cc");

      System.out.println(split1); // 【aa,bb,cc】

split 方法返回一个iterable,并且参数不能为null   (Preconditions.checkNotNull(sequence);)

       4. splitter 添加筛选条件

  limit:

//         limit ,拆分到指定的数量后,不再拆分,余下的归为一起
        Iterable<String> split2 = splitByComma.limit(3).split("aa,bb,cc,dd,ee");
        System.out.println(split2);  //[aa, bb, cc,dd,ee] 拆分为三个元素,最后一个是cc,dd,ee
OmitEmptyStrings:
//       omitEmptyStrings 遇到空字符串跳过去
//        splitToList  返回Iterable有时候不好用,可直接返回list
        splitByComma
                .omitEmptyStrings()
                .splitToList("aa,,bb,,cc")
                .stream()
                .forEach(System.out::print); // aa bb cc

trimResults:

//        trimResults: 去除首尾空格, 也可以传入参数CharMatcher指定默认是空格
        splitByComma
//                .trimResults()
                .trimResults(CharMatcher.isNot('a')) // 去除不匹配a的
                .splitToList("   ab , c , d  ,aa  ")
                .stream()
                .forEach(System.out::print);

  charMatcher: 具体参考 https://blog.csdn.net/victor_cindy1/article/details/52073155

withKeyValueSeparator:

//     切分k-v 形式的,返回一个map
//        按照 逗号拆分字符串,withKeyValueSeparator按照井号拆分k-v
        Map<String, String> splitMap = Splitter.on(",")
                .withKeyValueSeparator("#") // 返回一个MapSplitter,对字符串进行k-v的拆分
                .split("123#123,!1243#ee"); //{123=123, !1243=ee}

//        固定长度拆分
        Splitter splitByfixedLength = Splitter.fixedLength(4);
        List<String> abc = splitByfixedLength.splitToList("aaaabbbbcccc");
        System.out.println(abc);  //[aaaa, bbbb, cccc]

Joiner: 连接器

  1. on  构建

      Joiner joiner = Joiner.on("-");

  2. skipNulls 跳过null

     useForNull(string default) 遇到null时 使用默认值

        String join = joiner
                .skipNulls() // 跳过null
//                .useForNull("default") // 遇到null 使用默认值代替,不能和skipNull一起使用
                .join(Lists.newArrayList(1, 2, 3, null, 4, 5, 6)); // 1-2-3-4-5-6

  3. withKeyValueSeparator

//      连接 map中的key value
        String join1 = joiner.withKeyValueSeparator("->")
                .join(ImmutableMap.of("A", "a", "B", "b"));
        System.out.println(join1); //A->a-B->b

  Strings:

//        guava中的工具类大量适用  Preconditions.checkNotNull(a); 所有传入null会空指针
        System.out.println(
                // 公共前缀
                Strings.commonPrefix("aaa","abc")
        );
        System.out.println(
//                公共后缀
                Strings.commonSuffix("bcd","csa")
        );
        System.out.println(
//                空字符串转为null
                Strings.emptyToNull("")
        );
        System.out.println(
//                判断是null还是空字符串
                Strings.isNullOrEmpty(null)
        );
        System.out.println(
//                null转空字符串
                Strings.nullToEmpty(null)
        );
        System.out.println(
                Strings.lenientFormat("aaa","c","b") //aaa [c, b]
        );
        System.out.println(
//               返回一个最小长度为5,以参数123为基准,不足的使用 c补充,
//                如果最小长度设置的小于基准123的长度,则返回123
                Strings.padEnd("123",5,'c')
        );
        System.out.println(
                Strings.padStart("777",6,'0')
        );
//        复制多分
        Strings.repeat("aaa",3);//aaaaaaaaa

Objects:

  最常用的 是 equal()方法

com.google.common.base.Objects.equal("aa",null);

如果使用的jdk版本是 java8以上的,则使用java8提供的Objects最好,提供的方法也多

猜你喜欢

转载自blog.csdn.net/xiaodujava/article/details/98986226