String.split()问题:中间保留,最后丢弃

String commaSeparatedString  = "Foo,,Bar,,Baz,,,";
String[] words = commaSeparatedString.split(",");
//[Foo, , Bar, , Baz]
System.out.println(Arrays.toString(words));

演示

import java.util.Map;
import org.hamcrest.CoreMatchers;
import org.junit.Assert;
import com.google.common.base.CharMatcher;
import com.google.common.base.Splitter;
import com.google.common.collect.Maps;/*** TODO 在此写上类的相关说明.<br>* @author gqltt<br>* @version 1.0.0 2021年11月11日<br>* @see * @since JDK 1.5.0*/
public class SplitterDemo {/*** @param args*/public static void main(String[] args) {splitOnCharacter();splitOnString();splitPattern();splitTrimEmpty();splitTrimDigit();splitKeepMissing();splitOmitMissing();}/*** 按字符切割.*/static void splitOnCharacter() {char delimiter = '|';String text = "foo|bar|baz";String[] expected = new String[]{"foo","bar","baz"};Iterable<String> values = Splitter.on(delimiter).split(text);int index = 0;for (String value : values) {Assert.assertThat(value, CoreMatchers.is(expected[index++]));}}/*** 按字符串切割.*/static void splitOnString() {String delimiter = "&";String text = "foo&bar&baz";String[] expected = new String[]{"foo","bar","baz"};Iterable<String> values = Splitter.on(delimiter).split(text);int index = 0;for (String value : values) {Assert.assertThat(value, CoreMatchers.is(expected[index++]));}}/*** 按正则表达式切割.*/static void splitPattern() {String pattern = "\\d+";String text = "foo123bar45678baz";String[] expected = new String[]{"foo","bar","baz"};Iterable<String> values = Splitter.onPattern(pattern).split(text);int index = 0;for (String value : values) {Assert.assertThat(value, CoreMatchers.is(expected[index++]));}}/*** 裁剪空串.*/static void splitTrimEmpty() {String delimiter = "&";String text = "foo   &  bar&   baz  ";String[] expected = new String[]{"foo","bar","baz"};Iterable<String> values = Splitter.on(delimiter).trimResults().split(text);int index = 0;for (String value : values) {Assert.assertThat(value, CoreMatchers.is(expected[index++]));}}/*** 裁剪数字.*/static void splitTrimDigit(){String delimiter = "&";String text = "1foo&bar2&2baz3";String[] expected = new String[]{"foo","bar","baz"};Iterable<String> values = Splitter.on(delimiter).trimResults(CharMatcher.javaDigit()).split(text);int index = 0;for (String value : values) {Assert.assertThat(value, CoreMatchers.is(expected[index++]));}}/*** 保留空串.*/static void splitKeepMissing(){char delimiter = '|';String text = "foo|bar|||baz";String[] expected = new String[]{"foo","bar","","","baz"};Iterable<String> values = Splitter.on(delimiter).split(text);int index = 0;for (String value : values) {Assert.assertThat(value, CoreMatchers.is(expected[index++]));}}/*** 省略空串.*/static void splitOmitMissing() {char delimiter = '|';String text = "foo|bar|||baz";String[] expected = new String[]{"foo","bar","baz"};Iterable<String> values = Splitter.on(delimiter).omitEmptyStrings().split(text);int index = 0;for (String value : values) {Assert.assertThat(value, CoreMatchers.is(expected[index++]));}}/*** 切割成map.*/static void splitMap() {String startSring = "Washington D.C=Redskins#New York City=Giants#Philadelphia=Eagles#Dallas=Cowboys";Map<String,String> testMap = Maps.newLinkedHashMap();testMap.put("Washington D.C","Redskins");testMap.put("New York City","Giants");testMap.put("Philadelphia","Eagles");testMap.put("Dallas","Cowboys");Splitter.MapSplitter mapSplitter = Splitter.on("#").withKeyValueSeparator("=");Map<String,String> splitMap = mapSplitter.split(startSring);Assert.assertThat(testMap, CoreMatchers.is(splitMap));}
}

Guava入门~Splitter相关推荐

  1. google guava 入门教程

    Guava(瓜娃)学习笔记 (代码下载地址) Guava工程包含了若干被google的java项目广泛依赖的核心库,例如:集合 [collections] .缓存 [caching] .原生类型支持 ...

  2. guava入门学习2(新集合)

    新集合类型 这可能是你梦寐以求的集合,在解决瘙痒方面,功能异常强大 2.1 MultiSet 痛点:统计次数 传统做法: Map<String,Integer> count = new H ...

  3. Guava入门~CacheStats

    构建缓存对象时调用recordStats(),指定可以做缓存统计 LoadingCache<String,TradeAccount> tradeAccountCache = CacheBu ...

  4. Guava入门~Lists

    import java.util.List; import org.hamcrest.CoreMatchers; import org.junit.Assert; import com.google. ...

  5. Guava入门~MoreObjects

    import java.math.BigDecimal; import org.hamcrest.CoreMatchers; import org.junit.Assert; import com.g ...

  6. Guava入门~Objects

    import java.util.Date; import org.hamcrest.CoreMatchers; import org.junit.Assert; import com.google. ...

  7. Guava入门~Charsets

    import java.io.UnsupportedEncodingException; import org.hamcrest.CoreMatchers; import org.junit.Asse ...

  8. Guava入门~CharMatcher

    import org.hamcrest.CoreMatchers; import org.junit.Assert; import com.google.common.base.CharMatcher ...

  9. Guava入门~Strings

    import org.hamcrest.CoreMatchers; import org.junit.Assert; import com.google.common.base.Strings;/** ...

最新文章

  1. 计算机无线模块怎样关闭,无线模块插在电脑上出现感叹号如何解决?教你三招...
  2. java单例模式-有用的模式
  3. 几个Linux命令输出的各列含义
  4. java学习论坛汇总
  5. 低代码音视频开发训练营
  6. requireJS和seajs区别?
  7. Hazelcast入门
  8. 推荐 21 个顶级的 Vue UI 库
  9. 荟萃分析6项研究表明炎症与骨赘形成有关联
  10. pycharm + python36 + opencv + opencv_contrib库的安装
  11. 小量数据和海量数据分页显示存储过程
  12. sql azure 语法_如何在SQL 2016中使用Azure Key Vault使用AlwaysOn配置TDE数据库
  13. apply_async进程不执行_[粉丝问答6]子进程进程的父进程关系
  14. Oracle数据同步接口,增量数据从ERP系统到本地临时表封装解决方案
  15. Kubectl merge kubeconfig.yml 文件
  16. C#检测驱动是否安装的问题
  17. Redis设计与实现笔记 |目录
  18. 盘点大数据分析AI工具的常用算法
  19. 微信小程序编辑与显示列表信息
  20. 如何搭建Vue开发环境的步骤

热门文章

  1. 阿里P8架构师谈:从单体架构、到SOA、再到微服务的架构设计详解
  2. Android官方开发文档Training系列课程中文版:线程执行操作之定义线程执行代码
  3. 一文掌握深度学习、神经网络和学习过程的历史
  4. MongoDB:SpringBoot有关@Document(collection = )与@Document(collation= )注解的区别
  5. 7 操作系统第二章 进程管理 进程同步与互斥
  6. shell 脚本编写 if else then
  7. sql server select和set赋值的区别
  8. 10天学安卓-第二天
  9. 年龄大了学Java是爱好还是转型?
  10. 2.1.3码元、波特、速率、带宽