Guava base -- Splitter
来源:互联网 发布:软件著作权侵权 编辑:程序博客网 时间:2024/05/21 10:18
Guava全文介绍地址:Google Guava
这次主要介绍是的是com.google.common.base.Splitter。我想做为一个程序员我们每天和String打交道的时候是会占很多时间的吧。字符串以一些分隔符标记分隔开也是我们工作中经常要遇到的问题。但是用Guava--Splitter,它会提取重叠子字符串的输入字符串,通常是通过识别表象的分隔符序列。这个分隔符可以指定单个字符,固定字符串,正则表达式或CharMatcher实例。或者,而不是使用一个分离器,分配器可以提取相邻给定固定长度的子字符串。
它的所有方法如下:
static SplitterfixedLength(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 Splitteron(char separator)返回一个splitter对象,通过给定的单个字符进行分隔static Splitteron(CharMatcher separatorMatcher)返回一个splitter对象,通过给定的CharMatcher进行分隔static Splitteron(Pattern separatorPattern)返回一个splitter对象,通过给定的Pattern进行分隔static Splitteron(String separator)返回一个splitter对象,通过给定的字符串进行分隔static SplitteronPattern(String separatorPattern)返回一个splitter对象,认为任何子序列匹配一个给定的模式(正则表达式)是一个分隔符。Iterable<String> split(CharSequence sequence)将序列分为字符串组件和使他们可以通过迭代器List<String> splitToList(CharSequence sequence)将序列分为字符串组件作为一个不可变的listSplitter 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 SplitterTest { @Test public void testSplitter() { 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); assertThat(testMap,is(splitMap)); } @Test public void testSplitPattern(){ String pattern = "\\d+"; String text = "foo123bar45678baz"; String[] expected = new String[]{"foo","bar","baz"}; Iterable<String> values = Splitter.on(Pattern.compile(pattern)).split(text); int index = 0; for (String value : values) { assertThat(value,is(expected[index++])); } } @Test public void testSplitStringPattern(){ 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) { assertThat(value,is(expected[index++])); } } @Test public void testSplit(){ 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) { assertThat(value,is(expected[index++])); } } @Test public void testSplitTrimResults(){ 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) { assertThat(value,is(expected[index++])); } } @Test public void testSplitTrimResultsII(){ String delimiter = "&"; String text = "1foo&bar2&2baz3"; String[] expected = new String[]{"foo","bar","baz"}; Iterable<String> values = Splitter.on(delimiter).trimResults(CharMatcher.JAVA_DIGIT).split(text); int index = 0; for (String value : values) { assertThat(value,is(expected[index++])); } } @Test public void testSplitOnCharacter(){ 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) { assertThat(value,is(expected[index++])); } } @Test public void testSplitOnCharacterKeepMissing(){ 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) { assertThat(value,is(expected[index++])); } } @Test public void testSplitOnCharacterOmitMissing(){ 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) { assertThat(value,is(expected[index++])); } }}
0 0
- Guava base -- Splitter
- guava Splitter
- guava Splitter
- Guava学习之Splitter
- 【Guava】Joiner、Splitter源码
- Guava学习之Splitter
- guava中的Splitter
- guava之Splitter
- Google Guava Splitter
- Guava使用之Splitter
- guava的String之Splitter
- Google Guava的splitter用法
- guava之Joiner 和 Splitter
- guava之Joiner 和 Splitter
- guava之Joiner 和 Splitter
- 【Java8】Guava——Splitter
- guava的String之Splitter
- Guava字符串处理Joiner、Splitter
- stm32 学习经历—环境搭建 以103 407搭建 3/3
- 【issue】listView子项不能获取焦点
- mac和phy的关系(一)
- SSH(Struts2,Spring,Hibernate)整合开发流程
- 一种用于确定查询结果的方法与设备
- Guava base -- Splitter
- Android开发笔记之广播,service实现音乐的播放暂停停止快进等功能
- html 常用元素
- promise对象学习
- c语言==字符数组与字符串,char的取值范围(1)
- BZOJ 2818 Gcd(gcd(x,y)为素数/欧拉函数/莫比乌斯反演)
- LaTeX:公式及编号
- NSRunLoop浅谈
- mac和phy的关系(二)