Google Guava学习(10)-Guava字符串工具Spiltter

来源:互联网 发布:origin8.0作图软件 编辑:程序博客网 时间:2024/05/19 23:54

1. 功能:处理字符串拆分

2.代码:

package com.example.google.guava.demo.string;import com.google.common.base.Splitter;import java.util.List;import java.util.Map;import static com.google.common.collect.Lists.newArrayList;/** * <p> * <code>SpiltterTest</code> * </p> * Description: Splitter -> 字符串分离器 * Splitter可以支持单个字符、字符串、正则表达式或者CharMatcher实例来分割给定的字符串 * 注意: * 1.Splitter对象是immutable的,所以你必须用一个新的Splitter对象去接收 * 2.用正则表达式来分割字符串的效率很低 * 3.@GwtCompatible意思是Google Web Toolkit(GWT)兼容 * * @author Mcchu * @date 2017/10/23 10:43 */public class SpiltterTest {    public static void main(String[] args) {        // 1.根据某个字符分割字符串并做trim操作和过滤""的操作        String str1 = "the ,quick, , brown         , fox,      jumps, over, the, lazy, little dog.";        Iterable<String> result1 = Splitter.on(',')   // 根据逗号分割字符串                .trimResults()              //对每个分割后的元素做trim操作                .omitEmptyStrings()         // 过滤掉空的元素                .split( str1 );        System.out.println("1.简单使用Splitter:"+result1);    //也可以使用for循环输出        // 2.根据指定长度分割字符串        String str2 = "hello world!";        Iterable<String> result2 = Splitter.fixedLength(2).split(str2);        System.out.println("2.方法fixedLength的使用:"+result2);        // 3.当分割的子字符串达到了limit设置的个数时,则停止分割        String str31 = "a,b,c,d,e";        Iterable<String> result31 = Splitter.on(",").limit(3).split(str31);        System.out.println("3.方法limit的使用:"+result31);        System.out.println("  # 如果上面看到的不直观,可以通过遍历来看,分割成了3个子字符串:");        for ( String str:result31 ){            System.out.println("  "+str);        }        String str32 = "a,b,,c,,,d,e";        Iterable<String> result321 = Splitter.on(",").limit(3).omitEmptyStrings().split(str32);        Iterable<String> result322 = Splitter.on(",").limit(3).split(str32);        System.out.println("  # 此处分割带有空的字符串,使用omitEmptyStrings:");        for ( String str: result321 ){            System.out.println("  "+str);        }        System.out.println("  # 此处分割带有空的字符串,且不使用omitEmptyStrings:");        for ( String str: result322 ){            System.out.println("  "+str);        }        // 4.字符串转List        List<String> strList = newArrayList(Splitter.on(",").split("a,_b,c__"));        strList.add("d_");  // 测试是否可以添加元素        System.out.println("4.字符串分割转List:"+strList);        // 5.字符串转Map        Map<String,String> strMap = Splitter.on(";").trimResults().withKeyValueSeparator("=").split("a=2;b=3");        System.out.println("5.字符串分割转Map:"+strMap);        // 6.正则分割        String str6 = "$1$ab$5$cd7$$2h";        Iterable<String> result6 = Splitter.onPattern("[0-9]").split(str6);        System.out.println("6.使用正则表达式分割字符串:"+result6);        // 7.拆分字符串转不可变列表        String str7 = "a,b,c";        List<String> newStrList = Splitter.on(",").splitToList(str7);        //newStrList.add("d");    // 测试是否可以添加元素,此处抛java.lang.UnsupportedOperationException        System.out.println("7.分割并转定长的List集合:"+newStrList);    }}
3. 输出结果:

1.简单使用Splitter:[the, quick, brown, fox, jumps, over, the, lazy, little dog.]2.方法fixedLength的使用:[he, ll, o , wo, rl, d!]3.方法limit的使用:[a, b, c,d,e]  # 如果上面看到的不直观,可以通过遍历来看,分割成了3个子字符串:  a  b  c,d,e  # 此处分割带有空的字符串,使用omitEmptyStrings:  a  b  c,,,d,e  # 此处分割带有空的字符串,且不使用omitEmptyStrings:  a  b  ,c,,,d,e4.字符串分割转List:[a, _b, c__, d_]5.字符串分割转Map:{a=2, b=3}6.使用正则表达式分割字符串:[$, $ab$, $cd, $$, h]7.分割并转定长的List集合:[a, b, c]


附录:

参考:http://www.yiibai.com/guava/guava_spliter.html


原创粉丝点击