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. springBoot怎样访问静态资源?+静态资源简介

    1.静态资源 怎样通过浏览器访问静态资源? 注意:不需要加static目录.因为只是告诉springboot目录,而不是静态资源路劲. 这时访问路径就需要加上/static

  2. tinymce实现ctrl+v粘贴word图片并上传

    tinymce是很优秀的一款富文本编辑器,可以去官网下载.https://www.tiny.cloud 这里分享的是它官网的一个收费插件powerpaste的旧版本源码,但也不影响功能使用. http ...

  3. 51nod 1677

    考虑树上的每条边对答案的贡献--- x ----y ---若 x 左边有 a2 个点,y 的右边有 a3 个点那么改边对答案的贡献为 C(n, k) - C(a2, k) - C(a3, k)快速幂求 ...

  4. 【概率论】3-4:二维分布(Bivariate Distribution)

    title: [概率论]3-4:二维分布(Bivariate Distribution) categories: Mathematic Probability keywords: Discrete J ...

  5. postgresql 一些操作

    postgresql 对sql语句敏感的. 所以尽量标准化输入 #############查看版本信息 ############ 1.查看客户端版本 psql --version 1 2.查看服务器端 ...

  6. CRT小键盘输入乱码

    Options --> Session Options --> Terminal --> Emulation --> Modes 去选中 Enable keypad mode ...

  7. 【Golang】基于录制,自动生成go test接口自动化用例

    背景 之前写过一篇博客,介绍怎么用Python通过解析抓包数据,完成自动化用例的编写.最近这段时间在使用go test,所以就在想能不能也使用代码来生成自动化用例,快速提升测试用例覆盖率.说干就干. ...

  8. keepalived服务

    集群相关概念简述 HA是High Available缩写,是双机集群系统简称,指高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点. 1.集群的分类: ...

  9. 黑马vue---37-38、vue实例的生命周期

    黑马vue---37-38.vue实例的生命周期 一.总结 一句话总结: created:实例已经在内存中创建OK,此时 data 和 methods 已经创建OK,此时还没有开始 编译模板 moun ...

  10. 一篇文章搞懂Python装饰器所有用法

    01. 装饰器语法糖 如果你接触 Python 有一段时间了的话,想必你对 @ 符号一定不陌生了,没错 @ 符号就是装饰器的语法糖. 它放在一个函数开始定义的地方,它就像一顶帽子一样戴在这个函数的头上 ...