zoukankan      html  css  js  c++  java
  • 【java】【guava】Google Guava的splitter用法

    Google Guava的splitter,分割字符串的用法

    package com.sxd.swapping.guava;
    
    import com.google.common.base.CharMatcher;
    import com.google.common.base.Splitter;
    import org.assertj.core.util.Lists;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import java.util.ArrayList;
    
    /**
     * @Author: SXD
     * @Description:  Google Guava的splitter,分割字符串的用法
     * @Date: create in 2019/11/12 9:52
     */
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class GuavaSplitterTest {
    
        String str = "a,,b,    c,,,,2312312342,dasdaaa ,德玛西亚,    艾欧尼亚,寒冰之地   ,abCDefGHdasIJklmnoPpQqZz,ooAAdas";
    
        /**
         * 按 指定字符 拆分源字符串
         */
        @Test
        public void splitTest(){
            Iterable<String> split = Splitter.on(",").split(str);
            printResult(split);
        }
    
        /**
         * 按 指定字符  拆分源字符串
         * 并去除 空值
         */
        @Test
        public void omitEmptyStringsTest(){
            Iterable<String> split = Splitter.on(",").omitEmptyStrings().split(str);
            printResult(split);
        }
    
    
        /**
         * 按 指定字符  拆分源字符串
         * 并去除空值
         * 并去除额外空格
         */
        @Test
        public void trimResultsTest(){
            Iterable<String> split = Splitter.on(",").trimResults().omitEmptyStrings().split(str);
            printResult(split);
        }
    
    
        /**
         * 按 指定字符  拆分源字符串
         * 并去除空值
         * 并 按照指定类型 去除每一个分隔元素内的 指定类型
         */
        @Test
        public void trimResultsWithCharTest(){
            //去除 元素中包含的数字
            Iterable<String> split1 = Splitter.on(",").trimResults(CharMatcher.digit()).omitEmptyStrings().split(str);
            printResult(split1);
    
            //去除 元素中的 空格
            Iterable<String> split2 = Splitter.on(",").trimResults(CharMatcher.whitespace()).omitEmptyStrings().split(str);
            printResult(split2);
    
            //去除 元素中的 空格
            Iterable<String> split3 = Splitter.on(",").trimResults(CharMatcher.breakingWhitespace()).omitEmptyStrings().split(str);
            printResult(split3);
    
            //去除 元素中的 包含在ASCII中的所有元素 [留下的:例如中文]
            Iterable<String> split4 = Splitter.on(",").trimResults(CharMatcher.ascii()).omitEmptyStrings().split(str);
            printResult(split4);
    
            //去除 元素中的 任何元素
            Iterable<String> split5 = Splitter.on(",").trimResults(CharMatcher.any()).omitEmptyStrings().split(str);
            printResult(split5);
    
            //不去除 元素中的 任何元素
            Iterable<String> split6 = Splitter.on(",").trimResults(CharMatcher.none()).omitEmptyStrings().split(str);
            printResult(split6);
    
            //去除 元素左右两侧的在a-z范围内的元素
            Iterable<String> split9 = Splitter.on(",").trimResults(CharMatcher.inRange('a','z')).omitEmptyStrings().split(str);
            printResult(split9);
    
            //去除 元素左右两侧中不包含a  的元素
            Iterable<String> split10 = Splitter.on(",").trimResults(CharMatcher.isNot('a')).omitEmptyStrings().split(str);
            printResult(split10);
    
        }
    
    
    
    
        /**
         * 将 Iterable<String> 转化为 List<String>
         *
         * 最终打印结果集
         * @param split Iterable<String>
         */
        private void printResult(Iterable<String> split){
            ArrayList<String> result = Lists.newArrayList(split);
            System.out.println("结果集大小:"+result.size());
            System.out.println(">>>>输入结果集:");
            for (String s : result) {
                System.out.println(s);
            }
            System.out.println();
        }
    }

    效果可以自行 粘贴 ,单元测试直接运行即可。

  • 相关阅读:
    栈 队列 递归 算法的GO语言实现
    数组与链表算法
    树算法的GO语言实现
    排序算法的GO语言实现
    如何抵抗记忆的衰退
    C程序运行的背后(2)
    C程序运行的背后(1)
    Shell脚本:“syntax error:unexpected end of file”
    电线的粗细与电流的大小怎么算?电流的大小与电器的功率有什么关系? 如何根据电流的大小选择铜质电线的粗细
    Word2019发布文章到博客园
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/11840742.html
Copyright © 2011-2022 走看看