Splitter

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012410733/article/details/51584389
                                        <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-e2445db1a8.css">
                    <div class="htmledit_views">

Guava全文介绍地址:Google Guava

这次主要介绍是的是com.google.common.base.Splitter。我想做为一个程序员我们每天和String打交道的时候是会占很多时间的吧。字符串以一些分隔符标记分隔开也是我们工作中经常要遇到的问题。但是用Guava–Splitter,它会提取重叠子字符串的输入字符串,通常是通过识别表象的分隔符序列。这个分隔符可以指定单个字符,固定字符串,正则表达式或CharMatcher实例。或者,而不是使用一个分离器,分配器可以提取相邻给定固定长度的子字符串。

它的所有方法如下:


   
   
  1. static Splitter fixedLength(int length)
  2. 返回一个splitter对象把目标字符串按字符长度分隔
  3. Splitter limit(int limit)
  4. 返回一个splitter对象,但它停止分隔当它到达limit的时候。
  5. Returns a splitter that behaves equivalently to this splitter but stops splitting after it reaches the limit.
  6. Splitter omitEmptyStrings()
  7. 返回一个splitter对象,但是返回结果会删除空字符
  8. static Splitter on(char separator)
  9. 返回一个splitter对象,通过给定的单个字符进行分隔
  10. static Splitter on(CharMatcher separatorMatcher)
  11. 返回一个splitter对象,通过给定的CharMatcher进行分隔
  12. static Splitter on(Pattern separatorPattern)
  13. 返回一个splitter对象,通过给定的Pattern进行分隔
  14. static Splitter on(String separator)
  15. 返回一个splitter对象,通过给定的字符串进行分隔
  16. static Splitter onPattern(String separatorPattern)
  17. 返回一个splitter对象,认为任何子序列匹配一个给定的模式(正则表达式)是一个分隔符。
  18. Iterable <String> split(CharSequence sequence)
  19. 将序列分为字符串组件和使他们可以通过迭代器
  20. List <String> splitToList(CharSequence sequence)
  21. 将序列分为字符串组件作为一个不可变的list
  22. Splitter trimResults()
  23. 返回一个splitter对象,但是为移除返回list对象中每个对象前后的空白,相当于trimResults(CharMatcher.WHITESPACE)
  24. Splitter trimResults(CharMatcher trimmer)
  25. 返回一个splitter对象,但是为移除返回list对象中每个对象前后与给定的CharMatcher对应的字符
  26. Splitter.MapSplitter withKeyValueSeparator(char separator)
  27. 返回一个MapSplitterce,通过指定单个的cahr分解成entries,然后再通过entry中的特定字符分隔成key-value形式Map。是Join.withKeyValueSeparator()的逆运算
  28. Splitter.MapSplitter withKeyValueSeparator(Splitter keyValueSplitter)
  29. 返回一个MapSplitterce,通过指定Splitter分解成entries,然后再通过entry中的特定字符分隔成key-value形式的Map。是Join.withKeyValueSeparator()的逆运算
  30. Splitter.MapSplitter withKeyValueSeparator(String separator)
  31. 返回一个MapSplitterce,通过指定String分解成entries,然后再通过entry中的特定字符分隔成key-value形式的Map。是Join.withKeyValueSeparator()的逆运算

然后大家就可以对照下面的例子来理解这个类的用法了。


   
   
  1. public class SplitterTest {
  2. @Test
  3. public void testSplitter() {
  4. String startSring = "Washington D.C=Redskins#New York City=Giants#Philadelphia=Eagles#Dallas=Cowboys";
  5. Map<String,String> testMap = Maps.newLinkedHashMap();
  6. testMap.put( "Washington D.C", "Redskins");
  7. testMap.put( "New York City", "Giants");
  8. testMap.put( "Philadelphia", "Eagles");
  9. testMap.put( "Dallas", "Cowboys");
  10. Splitter.MapSplitter mapSplitter = Splitter.on( "#").withKeyValueSeparator( "=");
  11. Map<String,String> splitMap = mapSplitter.split(startSring);
  12. assertThat(testMap,is(splitMap));
  13. }
  14. @Test
  15. public void testSplitPattern(){
  16. String pattern = "\\d+";
  17. String text = "foo123bar45678baz";
  18. String[] expected = new String[]{ "foo", "bar", "baz"};
  19. Iterable<String> values = Splitter.on(Pattern.compile(pattern)).split(text);
  20. int index = 0;
  21. for (String value : values) {
  22. assertThat(value,is(expected[index++]));
  23. }
  24. }
  25. @Test
  26. public void testSplitStringPattern(){
  27. String pattern = "\\d+";
  28. String text = "foo123bar45678baz";
  29. String[] expected = new String[]{ "foo", "bar", "baz"};
  30. Iterable<String> values = Splitter.onPattern(pattern).split(text);
  31. int index = 0;
  32. for (String value : values) {
  33. assertThat(value,is(expected[index++]));
  34. }
  35. }
  36. @Test
  37. public void testSplit(){
  38. String delimiter = "&";
  39. String text = "foo&bar&baz";
  40. String[] expected = new String[]{ "foo", "bar", "baz"};
  41. Iterable<String> values = Splitter.on(delimiter).split(text);
  42. int index = 0;
  43. for (String value : values) {
  44. assertThat(value,is(expected[index++]));
  45. }
  46. }
  47. @Test
  48. public void testSplitTrimResults(){
  49. String delimiter = "&";
  50. String text = "foo & bar& baz ";
  51. String[] expected = new String[]{ "foo", "bar", "baz"};
  52. Iterable<String> values = Splitter.on(delimiter).trimResults().split(text);
  53. int index = 0;
  54. for (String value : values) {
  55. assertThat(value,is(expected[index++]));
  56. }
  57. }
  58. @Test
  59. public void testSplitTrimResultsII(){
  60. String delimiter = "&";
  61. String text = "1foo&bar2&2baz3";
  62. String[] expected = new String[]{ "foo", "bar", "baz"};
  63. Iterable<String> values = Splitter.on(delimiter).trimResults(CharMatcher.JAVA_DIGIT).split(text);
  64. int index = 0;
  65. for (String value : values) {
  66. assertThat(value,is(expected[index++]));
  67. }
  68. }
  69. @Test
  70. public void testSplitOnCharacter(){
  71. char delimiter = '|';
  72. String text = "foo|bar|baz";
  73. String[] expected = new String[]{ "foo", "bar", "baz"};
  74. Iterable<String> values = Splitter.on(delimiter).split(text);
  75. int index = 0;
  76. for (String value : values) {
  77. assertThat(value,is(expected[index++]));
  78. }
  79. }
  80. @Test
  81. public void testSplitOnCharacterKeepMissing(){
  82. char delimiter = '|';
  83. String text = "foo|bar|||baz";
  84. String[] expected = new String[]{ "foo", "bar", "", "", "baz"};
  85. Iterable<String> values = Splitter.on(delimiter).split(text);
  86. int index = 0;
  87. for (String value : values) {
  88. assertThat(value,is(expected[index++]));
  89. }
  90. }
  91. @Test
  92. public void testSplitOnCharacterOmitMissing(){
  93. char delimiter = '|';
  94. String text = "foo|bar|||baz";
  95. String[] expected = new String[]{ "foo", "bar", "baz"};
  96. Iterable<String> values = Splitter.on(delimiter).omitEmptyStrings().split(text);
  97. int index = 0;
  98. for (String value : values) {
  99. assertThat(value,is(expected[index++]));
  100. }
  101. }
  102. }
        </div>
            </div>
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012410733/article/details/51584389
                                        <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-e2445db1a8.css">
                    <div class="htmledit_views">

Guava全文介绍地址:Google Guava

这次主要介绍是的是com.google.common.base.Splitter。我想做为一个程序员我们每天和String打交道的时候是会占很多时间的吧。字符串以一些分隔符标记分隔开也是我们工作中经常要遇到的问题。但是用Guava–Splitter,它会提取重叠子字符串的输入字符串,通常是通过识别表象的分隔符序列。这个分隔符可以指定单个字符,固定字符串,正则表达式或CharMatcher实例。或者,而不是使用一个分离器,分配器可以提取相邻给定固定长度的子字符串。

它的所有方法如下:


 
 
  1. static Splitter fixedLength(int length)
  2. 返回一个splitter对象把目标字符串按字符长度分隔
  3. Splitter limit(int limit)
  4. 返回一个splitter对象,但它停止分隔当它到达limit的时候。
  5. Returns a splitter that behaves equivalently to this splitter but stops splitting after it reaches the limit.
  6. Splitter omitEmptyStrings()
  7. 返回一个splitter对象,但是返回结果会删除空字符
  8. static Splitter on(char separator)
  9. 返回一个splitter对象,通过给定的单个字符进行分隔
  10. static Splitter on(CharMatcher separatorMatcher)
  11. 返回一个splitter对象,通过给定的CharMatcher进行分隔
  12. static Splitter on(Pattern separatorPattern)
  13. 返回一个splitter对象,通过给定的Pattern进行分隔
  14. static Splitter on(String separator)
  15. 返回一个splitter对象,通过给定的字符串进行分隔
  16. static Splitter onPattern(String separatorPattern)
  17. 返回一个splitter对象,认为任何子序列匹配一个给定的模式(正则表达式)是一个分隔符。
  18. Iterable <String> split(CharSequence sequence)
  19. 将序列分为字符串组件和使他们可以通过迭代器
  20. List <String> splitToList(CharSequence sequence)
  21. 将序列分为字符串组件作为一个不可变的list
  22. Splitter trimResults()
  23. 返回一个splitter对象,但是为移除返回list对象中每个对象前后的空白,相当于trimResults(CharMatcher.WHITESPACE)
  24. Splitter trimResults(CharMatcher trimmer)
  25. 返回一个splitter对象,但是为移除返回list对象中每个对象前后与给定的CharMatcher对应的字符
  26. Splitter.MapSplitter withKeyValueSeparator(char separator)
  27. 返回一个MapSplitterce,通过指定单个的cahr分解成entries,然后再通过entry中的特定字符分隔成key-value形式Map。是Join.withKeyValueSeparator()的逆运算
  28. Splitter.MapSplitter withKeyValueSeparator(Splitter keyValueSplitter)
  29. 返回一个MapSplitterce,通过指定Splitter分解成entries,然后再通过entry中的特定字符分隔成key-value形式的Map。是Join.withKeyValueSeparator()的逆运算
  30. Splitter.MapSplitter withKeyValueSeparator(String separator)
  31. 返回一个MapSplitterce,通过指定String分解成entries,然后再通过entry中的特定字符分隔成key-value形式的Map。是Join.withKeyValueSeparator()的逆运算

然后大家就可以对照下面的例子来理解这个类的用法了。


 
 
  1. public class SplitterTest {
  2. @Test
  3. public void testSplitter() {
  4. String startSring = "Washington D.C=Redskins#New York City=Giants#Philadelphia=Eagles#Dallas=Cowboys";
  5. Map<String,String> testMap = Maps.newLinkedHashMap();
  6. testMap.put( "Washington D.C", "Redskins");
  7. testMap.put( "New York City", "Giants");
  8. testMap.put( "Philadelphia", "Eagles");
  9. testMap.put( "Dallas", "Cowboys");
  10. Splitter.MapSplitter mapSplitter = Splitter.on( "#").withKeyValueSeparator( "=");
  11. Map<String,String> splitMap = mapSplitter.split(startSring);
  12. assertThat(testMap,is(splitMap));
  13. }
  14. @Test
  15. public void testSplitPattern(){
  16. String pattern = "\\d+";
  17. String text = "foo123bar45678baz";
  18. String[] expected = new String[]{ "foo", "bar", "baz"};
  19. Iterable<String> values = Splitter.on(Pattern.compile(pattern)).split(text);
  20. int index = 0;
  21. for (String value : values) {
  22. assertThat(value,is(expected[index++]));
  23. }
  24. }
  25. @Test
  26. public void testSplitStringPattern(){
  27. String pattern = "\\d+";
  28. String text = "foo123bar45678baz";
  29. String[] expected = new String[]{ "foo", "bar", "baz"};
  30. Iterable<String> values = Splitter.onPattern(pattern).split(text);
  31. int index = 0;
  32. for (String value : values) {
  33. assertThat(value,is(expected[index++]));
  34. }
  35. }
  36. @Test
  37. public void testSplit(){
  38. String delimiter = "&";
  39. String text = "foo&bar&baz";
  40. String[] expected = new String[]{ "foo", "bar", "baz"};
  41. Iterable<String> values = Splitter.on(delimiter).split(text);
  42. int index = 0;
  43. for (String value : values) {
  44. assertThat(value,is(expected[index++]));
  45. }
  46. }
  47. @Test
  48. public void testSplitTrimResults(){
  49. String delimiter = "&";
  50. String text = "foo & bar& baz ";
  51. String[] expected = new String[]{ "foo", "bar", "baz"};
  52. Iterable<String> values = Splitter.on(delimiter).trimResults().split(text);
  53. int index = 0;
  54. for (String value : values) {
  55. assertThat(value,is(expected[index++]));
  56. }
  57. }
  58. @Test
  59. public void testSplitTrimResultsII(){
  60. String delimiter = "&";
  61. String text = "1foo&bar2&2baz3";
  62. String[] expected = new String[]{ "foo", "bar", "baz"};
  63. Iterable<String> values = Splitter.on(delimiter).trimResults(CharMatcher.JAVA_DIGIT).split(text);
  64. int index = 0;
  65. for (String value : values) {
  66. assertThat(value,is(expected[index++]));
  67. }
  68. }
  69. @Test
  70. public void testSplitOnCharacter(){
  71. char delimiter = '|';
  72. String text = "foo|bar|baz";
  73. String[] expected = new String[]{ "foo", "bar", "baz"};
  74. Iterable<String> values = Splitter.on(delimiter).split(text);
  75. int index = 0;
  76. for (String value : values) {
  77. assertThat(value,is(expected[index++]));
  78. }
  79. }
  80. @Test
  81. public void testSplitOnCharacterKeepMissing(){
  82. char delimiter = '|';
  83. String text = "foo|bar|||baz";
  84. String[] expected = new String[]{ "foo", "bar", "", "", "baz"};
  85. Iterable<String> values = Splitter.on(delimiter).split(text);
  86. int index = 0;
  87. for (String value : values) {
  88. assertThat(value,is(expected[index++]));
  89. }
  90. }
  91. @Test
  92. public void testSplitOnCharacterOmitMissing(){
  93. char delimiter = '|';
  94. String text = "foo|bar|||baz";
  95. String[] expected = new String[]{ "foo", "bar", "baz"};
  96. Iterable<String> values = Splitter.on(delimiter).omitEmptyStrings().split(text);
  97. int index = 0;
  98. for (String value : values) {
  99. assertThat(value,is(expected[index++]));
  100. }
  101. }
  102. }
        </div>
            </div>

猜你喜欢

转载自blog.csdn.net/weixin_42868638/article/details/82313357