Splitter可以对字符串进行分割,在分割时的方式有2种,

  1.按字符/字符串分割

  2.按正则进行分割

Splitter在分割完成时可以转换成listmap

一.按字符进行分割

//1.用指定字符切分字符串,并转换成list
String s1 = "hello|hihi";
String s2 = "hello|haha|||";
Splitter.on("|").splitToList(s1).forEach(System.out::println);
Splitter.on("|").split(s1).forEach(item ->System.out.println(item)); //2.忽略掉空的字符串或者多余的分割符
Splitter.on("|").omitEmptyStrings().splitToList(s2).forEach(System.out::println); //3.忽略掉字符串中的空格
Splitter.on("|").omitEmptyStrings().trimResults().splitToList("hello | guava|||").forEach(System.out::println); //4.固定长度分割
Splitter.on("|").fixedLength(4).splitToList("aaaabbbbccccdddd").forEach(System.out::println); //5.指定长度分割
List<String> list = Splitter.on("#").limit(3).splitToList("a#b#c#d#e#"); //以#来分割,分3部分成 a b #c#d#e 3部分
System.out.println(list.get(0));
System.out.println(list.get(1));
System.out.println(list.get(2));

二.按正则来进行分割

//1.传入字符的分割
Splitter.onPattern("\\|").splitToList("hello|world").forEach(System.out::println); //2.传入pattern的分割
Splitter.on(Pattern.compile("\\|")).omitEmptyStrings().trimResults().splitToList("a|b|c||").forEach(System.out::println);

//3.传入pattern 转换成map
  Map<String, String> map = Splitter.on(Pattern.compile("\\|")).omitEmptyStrings()

                       .trimResults().withKeyValueSeparator("=").split("a=b|c=d");

for (Entry<String, String> entry : map.entrySet()) {
  System.out.println(entry.getKey() +" = "+ entry.getValue());
}

 

三.测试

/**
* list转换为字符串
*/
@Test
public void joinTest(){
  List<String> names = Lists.newArrayList("John", "Jane", "Adam", "Tom");
  String result = Joiner.on(",").join(names);   assertEquals(result, "John,Jane,Adam,Tom");
} /**
* map转换为字符串
*/
@Test
public void whenConvertMapToString_thenConverted() {
  Map<String, Integer> salary = Maps.newHashMap();
  salary.put("John", 1000);
  salary.put("Jane", 1500);
  String result = Joiner.on(" , ").withKeyValueSeparator(" = ")
    .join(salary);
  System.out.println(result);
} /**
* list转String,跳过null
*/
@Test
public void whenConvertListToStringAndSkipNull_thenConverted() {
  List<String> names = Lists.newArrayList("John", null, "Jane", "Adam", "Tom");
  String result = Joiner.on(",").skipNulls().join(names);
  System.out.println(result);
  assertEquals(result, "John,Jane,Adam,Tom");
} /**
* list转String,将null变成其他值
*/
@Test
public void whenUseForNull_thenUsed() {
  List<String> names = Lists.newArrayList("John", null, "Jane", "Adam", "Tom");
  String result = Joiner.on(",").useForNull("nameless").join(names);
  System.out.println(result);
  assertEquals(result, "John,nameless,Jane,Adam,Tom");
} /**
* String to List
*/
@Test
public void whenCreateListFromString_thenCreated() {
  String input = "apple - banana - orange";
  List<String> result = Splitter.on("-").trimResults().splitToList(input);
  System.out.println(result);
  //assertThat(result, contains("apple", "banana", "orange"));
} /**
* String to Map
*/
@Test
public void whenCreateMapFromString_thenCreated() {
  String input = "John=first,Adam=second";
    Map<String, String> result = Splitter.on(",")
      .withKeyValueSeparator("=")
      .split(input);    assertEquals("first", result.get("John"));
    assertEquals("second", result.get("Adam"));
} /**
* 多个字符进行分割
*/
@Test
public void whenSplitStringOnMultipleSeparator_thenSplit() {
  String input = "apple.banana,,orange,,.";
  List<String> result = Splitter.onPattern("[.|,]")
    .omitEmptyStrings()
    .splitToList(input);
  System.out.println(result);
} /**
* 每隔多少字符进行分割
*/
@Test
public void whenSplitStringOnSpecificLength_thenSplit() {
  String input = "Hello world";
  List<String> result = Splitter.fixedLength(3).splitToList(input);
  System.out.println(result);
} /**
* 限制分割多少字后停止
*/
@Test
public void whenLimitSplitting_thenLimited() {
  String input = "a,b,c,d,e";
  List<String> result = Splitter.on(",")
            .limit(4)
          .splitToList(input);   assertEquals(4, result.size());
  System.out.println(result);
}

Guava 工具类之 Splitter的使用的更多相关文章

  1. 强大的 Guava 工具类

    Java 开发的同学应该都使用或者听说过 Google 提供的 Guava 工具包.日常使用最多的肯定是集合相关的工具类,还有 Guava cache,除了这些之外 Guava 还提供了很多有用的功能 ...

  2. 工具篇:介绍几个好用的guava工具类

    前言 平时我们都会封装一些处理缓存或其他的小工具.但每个人都封装一次,重复造轮子,有点费时间.有没有一些好的工具库推荐-guava.guava是谷歌基于java封装好的开源库,它的性能.实用性,比我们 ...

  3. Google的Guava工具类splitter和apache stringutil对比 编辑

    一直用的是apache的stringutil工具类,其实google的工具类项目 guava中居然也有字符串的分隔类splitter的,在 http://code.google.com/p/guava ...

  4. Guava工具类

    原文链接:http://blog.csdn.net/mnmlist/article/details/53425865 Objects类 Objects类有几个比较不错的方法,toString.hash ...

  5. Google guava工具类的介绍和使用

    概述 工具类 就是封装平常用的方法,不需要你重复造轮子,节省开发人员时间,提高工作效率.谷歌作为大公司,当然会从日常的工作中提取中很多高效率的方法出来.所以就诞生了guava.. 高效设计良好的API ...

  6. Guava工具类学习

    目录 一.介绍 二.Optional类 1.定义 2.java8自带Optional 3.使用 三.Preconditions类 1.定义 2.使用 四.Ordering类 1.定义 2.使用 五.R ...

  7. Guava 工具类之Cache的使用

    一.guava cache 介绍 1.介绍 guava cache是Google guava中提供的一款轻量级的本地缓存组件,其特点是简单.轻便.完善.扩展性强,内存管理机制也相对完善. 2.使用缓存 ...

  8. Guava 工具类之joiner的使用

    joiner主要用于对字符串的连接,也可用于对map中key value的连接 public class JoinerTest { private static final List<Strin ...

  9. Guava 工具类之Strings 的使用

    public class StringTest { public static void main(String[] args) { //判断是null还是空字符串 boolean b1 = Stri ...

随机推荐

  1. Java核心数据结构(List、Map、Set)原理与使用技巧

    JDK提供了一组主要的数据结构实现,如List.Set等常用数据结构.这些数据都继承自java.util.Collection接口,并位于java.util包内. 一.List接口 最重要的三种Lis ...

  2. vii

    #!/bin/bash ] then vi exit fi ] then echo "参数太多了!" exit fi ] # 文件已存在,一律直接打开不作任何处理 then exi ...

  3. 【组合数学】OI内的排列与组合(简单版)

    §1基本原理 △让我们来看下面问题: 从甲地到乙地,可以乘火车,也可以乘汽车,还可以乘轮船.一天中,火车有4班,汽车有2班,轮船有3班.那么,一天中乘坐这些交通工具从甲地到乙地共有多少种不同走法?△分 ...

  4. Noip2011 提高组 选择客栈

    P1311 选择客栈 直通 思路: ①看题,我们可以发现一个显然的性质,即当最左边的客栈向右移动时,最右边的客栈时单调向右的,并且右端点往右的客栈也符合要求.(因为只要左侧有一个满足的,右边的自然可以 ...

  5. GAN生成式对抗网络(三)——mnist数据生成

    通过GAN生成式对抗网络,产生mnist数据 引入包,数据约定等 import numpy as np import matplotlib.pyplot as plt import input_dat ...

  6. electron-vue搭建项目

    原文链接 使用pdf.js插件与LODOP控件实现前端浏览器静默打印PDF文件 lodop官网地址:http://www.lodop.net/download.html 点击下载,文件里有使用手册 e ...

  7. scrapy框架之Pipeline管道类

    Item Pipeline简介 Item管道的主要责任是负责处理有蜘蛛从网页中抽取的Item,他的主要任务是清洗.验证和存储数据.当页面被蜘蛛解析后,将被发送到Item管道,并经过几个特定的次序处理数 ...

  8. 八、linux文件系统上的特殊权限 SUID 、GUID、Sticky

    安全上下文 前提:进程有属主和属组,文件有属主和属组 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限 启动为进程之后,其进程的属主为发起者:进程的属组为发起者所属的组 进 ...

  9. [Phoenix] Mix 命令

    mix phx.gen.html 命令生成模板: # 其中 name 和 age 是 schema 字段名称,后面跟的是类型 # 下面这样的写法,会生成 controller 和 service 层的 ...

  10. 《梁宁·产品思维30讲》课程学习笔记(内含全套音频+ppt资料

    科技进步.产品迭代.公司演化.组织变迁……不变的是用户的情绪和人性. 那些信奉“用户驱动”的人,从普通人变成了行业大佬,建立了自己的世界.乔布斯.马化腾.马云.雷军.张小龙.周鸿祎.傅盛……这些改变世 ...