Guava base -- Splitter
2016-06-04 14:53
274 查看
Guava全文介绍地址:Google Guava
这次主要介绍是的是com.google.common.base.Splitter。我想做为一个程序员我们每天和String打交道的时候是会占很多时间的吧。字符串以一些分隔符标记分隔开也是我们工作中经常要遇到的问题。但是用Guava--Splitter,它会提取重叠子字符串的输入字符串,通常是通过识别表象的分隔符序列。这个分隔符可以指定单个字符,固定字符串,正则表达式或CharMatcher实例。或者,而不是使用一个分离器,分配器可以提取相邻给定固定长度的子字符串。
它的所有方法如下:
然后大家就可以对照下面的例子来理解这个类的用法了。
这次主要介绍是的是com.google.common.base.Splitter。我想做为一个程序员我们每天和String打交道的时候是会占很多时间的吧。字符串以一些分隔符标记分隔开也是我们工作中经常要遇到的问题。但是用Guava--Splitter,它会提取重叠子字符串的输入字符串,通常是通过识别表象的分隔符序列。这个分隔符可以指定单个字符,固定字符串,正则表达式或CharMatcher实例。或者,而不是使用一个分离器,分配器可以提取相邻给定固定长度的子字符串。
它的所有方法如下:
static Splitter fixedLength(int length) 返回一个splitter对象把目标字符串按字符长度分隔 Splitter limit(int limit) 返回一个splitter对象,但它停止分隔当它到达limit的时候。 Returns a splitter that behaves equivalently to this splitter but stops splitting after it reaches the limit. Splitter omitEmptyStrings() 返回一个splitter对象,但是返回结果会删除空字符 static Splitter on(char separator) 返回一个splitter对象,通过给定的单个字符进行分隔 static Splitter on(CharMatcher separatorMatcher) 返回一个splitter对象,通过给定的CharMatcher进行分隔 static Splitter on(Pattern separatorPattern) 返回一个splitter对象,通过给定的Pattern进行分隔 static Splitter on(String separator) 返回一个splitter对象,通过给定的字符串进行分隔 static Splitter onPattern(String separatorPattern) 返回一个splitter对象,认为任何子序列匹配一个给定的模式(正则表达式)是一个分隔符。 Iterable<String> split(CharSequence sequence) 将序列分为字符串组件和使他们可以通过迭代器 List<String> splitToList(CharSequence sequence) 将序列分为字符串组件作为一个不可变的list Splitter trimResults() 返回一个splitter对象,但是为移除返回list对象中每个对象前后的空白,相当于trimResults(CharMatcher.WHITESPACE) Splitter trimResults(CharMatcher trimmer) 返回一个splitter对象,但是为移除返回list对象中每个对象前后与给定的CharMatcher对应的字符 Splitter.MapSplitter withKeyValueSeparator(char separator) 返回一个MapSplitterce,通过指定单个的cahr分解成entries,然后再通过entry中的特定字符分隔成key-value形式Map。是Join.withKeyValueSeparator()的逆运算 Splitter.MapSplitter withKeyValueSeparator(Splitter keyValueSplitter) 返回一个MapSplitterce,通过指定Splitter分解成entries,然后再通过entry中的特定字符分隔成key-value形式的Map。是Join.withKeyValueSeparator()的逆运算 Splitter.MapSplitter withKeyValueSeparator(String separator) 返回一个MapSplitterce,通过指定String分解成entries,然后再通过entry中的特定字符分隔成key-value形式的Map。是Join.withKeyValueSeparator()的逆运算
然后大家就可以对照下面的例子来理解这个类的用法了。
public class JoinerTest { @Test public void testMapJoiner() { //Using LinkedHashMap so that the original order is preserved String expectedString = "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"); String returnedString = Joiner.on("#").withKeyValueSeparator("=").join(testMap); assertThat(returnedString,is(expectedString)); } @Test public void testJoinStrings(){ String[] values = new String[]{"foo", "bar","baz"}; String returned = Joiner.on("|").join(values); assertThat(returned,is("foo|bar|baz")); } @Test public void testJoinStringBuilder(){ String[] values = new String[]{"foo", "bar","baz"}; StringBuilder builder = new StringBuilder(); StringBuilder returned = Joiner.on("|").appendTo(builder,values); assertThat(returned,is(builder)); assertThat(returned.toString(),is("foo|bar|baz")); } @Test public void testJoinFileWriter() throws Exception{ File tempFile = new File("testTempFile.txt"); tempFile.deleteOnExit(); CharSink charSink = Files.asCharSink(tempFile, Charsets.UTF_8); Writer writer = charSink.openStream(); String[] values = new String[]{"foo", "bar","baz"}; Joiner.on("|").appendTo(writer,values); writer.flush(); writer.close(); String fromFileString = Files.toString(tempFile,Charsets.UTF_8); assertThat(fromFileString,is("foo|bar|baz")); } @Test public void testJoinStringsSkipNull(){ String[] values = new String[]{"foo",null,"bar"}; String returned = Joiner.on("#").skipNulls().join(values); assertThat(returned,is("foo#bar")); } @Test public void testJoinStringsUseForNull(){ String[] values = new String[]{"foo",null,"bar"}; String returned = Joiner.on("#").useForNull("missing").join(values); assertThat(returned,is("foo#missing#bar")); } @Test (expected = NullPointerException.class) public void testJoinStringsNoNullHandler(){ String[] values = new String[]{"foo",null,"bar"}; Joiner.on("#").join(values); fail("Should not get here"); } }
相关文章推荐
- Android 线程池
- [Elasticsearch] 多字段搜索 (一) - 多个及单个查询字符串
- AutoLayout适配教程(一)控件的等比例伸缩
- 网络爬虫随笔
- Linux进程间通信--共享内存
- Navicat快捷键
- ubuntu16.04开启ssh
- Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://...
- linux的centos7的数据库连接本地navi cat需要注意的
- css3 图片颜色叠加--background-blend-mode
- (转)Linux命令-进程管理
- Android M原生BUG,手机使用过程中SystemServer空指针异常导致手机重启
- 大型网站的架构演化,发展历程
- Linux 下编译安装 Python 3.4
- hiho_1089_floyd最短路
- python 压缩 解压缩 文件
- Qt中设置窗体大小的方法
- 阵前第一功
- 数组-Kth Largest Element in an Array(找出第K大的数)
- 进程调度算法