Guava字符串处理:连接,拆分,匹配,格式

Tags
#工具类
感觉Guava采用的Fluent风格还是不错的,和RxJava的使用有点像,链式调用,阅读性很好,可以好好学习下。
废话少说了,上代码:
package com.che.baseutil.guava.string;

import com.google.common.base.CaseFormat;
import com.google.common.base.CharMatcher;
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.collect.Lists;

import org.junit.Test;

import java.util.Arrays;
import java.util.List;

import static com.google.common.truth.Truth.assertThat;

/**
 * Guava字符串处理:分割,连接,匹配,格式
 *
 * @gradle testCompile 'com.google.truth:truth:0.27' [794]
 * @gradle compile 'com.google.guava:guava:19.0' [15076]
 * 作者:余天然 on 16/9/16 上午11:09
 */
public class StringTestClient {

    /**
     * 测试连接器-Joiner
     */
    @Test
    public void testJoiner() {
        Joiner joiner = Joiner.on(";").skipNulls();
        String result1 = joiner.join("Harry", null, "Ron", "Hermione");
        assertThat(result1).isEqualTo("Harry;Ron;Hermione");

        String result2 = Joiner.on(",").join(Arrays.asList(1, 5, 7));
        assertThat(result2).isEqualTo("1,5,7");
    }

    /**
     * 测试拆分器-Splitter
     */
    @Test
    public void testSplitter() {
        List<String> list1 = Splitter.on(';')
                .trimResults()//移除结果字符串的前导空白和尾部空白
                .omitEmptyStrings()//从结果中自动忽略空字符串
                .splitToList("foo;bar;;  ; qux;");
        assertThat(list1).isEqualTo(Lists.newArrayList("foo", "bar", "qux"));

        List<String> list2 = Splitter.fixedLength(3)//限制拆分出的字符串数量
                .splitToList("这使得splitter实例都是线程安全的");
        assertThat(list2).isEqualTo(Lists.newArrayList("这使得", "spl", "itt", "er实", "例都是", "线程安", "全的"));
    }

    /**
     * 测试字符匹配器-CharMatcher
     */
    @Test
    public void testCharMatcher() {
        //只保留数字字符
        String theDigits = CharMatcher.DIGIT.retainFrom("今天是2016年9月16日");
        assertThat(theDigits).isEqualTo("2016916");

        //去除两端的空格,并把中间的连续空格替换成单个空格
        String spaced = CharMatcher.WHITESPACE.trimAndCollapseFrom("  一个 CharMatcher   代表 一类 字符 ", ' ');
        assertThat(spaced).isEqualTo("一个 CharMatcher 代表 一类 字

© fishyer 2022