转 guava 字符串连接和字符串分割

转自https://www.iteye.com/blog/jackyrong-2157324

guava库中,包含了很好的join和split的功能,例子如下: 

1) 将LIST转换为使用字符串连接的字符串 
  

Java代码 

 收藏代码

  1. List names = Lists.newArrayList("John", "Jane", "Adam", "Tom");  
  2. String result = Joiner.on(",").join(names);  
  3.   
  4. assertEquals(result, "John,Jane,Adam,Tom");  



2)使用joiner把MAP转成STRING 

 

Java代码 

 收藏代码

  1. @Test  
  2. public void whenConvertMapToString_thenConverted() {  
  3.     Map salary = Maps.newHashMap();  
  4.     salary.put("John", 1000);  
  5.     salary.put("Jane", 1500);  
  6.     String result = Joiner.on(" , ").withKeyValueSeparator(" = ")  
  7.                                     .join(salary);  
  8.    
  9.     assertThat(result, containsString("John = 1000"));  
  10.     assertThat(result, containsString("Jane = 1500"));  
  11. }  
  12.    



3 将嵌套的collection join起来 
  

Java代码 

 收藏代码

  1. @Test  
  2. public void whenJoinNestedCollections_thenJoined() {  
  3.     List> nested = Lists.newArrayList(  
  4.       Lists.newArrayList("apple", "banana", "orange"),  
  5.       Lists.newArrayList("cat", "dog", "bird"),  
  6.       Lists.newArrayList("John", "Jane", "Adam"));  
  7.     String result = Joiner.on(";").join(Iterables.transform(nested,  
  8.       new Function, String>() {  
  9.           @Override  
  10.           public String apply(List input) {  
  11.               return Joiner.on("-").join(input);  
  12.           }  
  13.       }));  
  14.    
  15.     assertThat(result, containsString("apple-banana-orange"));  
  16.     assertThat(result, containsString("cat-dog-bird"));  
  17.     assertThat(result, containsString("apple-banana-orange"));  
  18. }  



4 当使用joiner时候处理null值 
   有几个对付NULL值的方法,第一个是skipNulls(). 
 

Java代码 

 收藏代码

  1. @Test  
  2. public void whenConvertListToStringAndSkipNull_thenConverted() {  
  3.     List names = Lists.newArrayList("John", null, "Jane", "Adam", "Tom");  
  4.     String result = Joiner.on(",").skipNulls().join(names);  
  5.    
  6.     assertEquals(result, "John,Jane,Adam,Tom");  
  7. }  



   或者干脆将null值换掉,就是: 
 

Java代码 

 收藏代码

  1. @Test  
  2. public void whenUseForNull_thenUsed() {  
  3.     List names = Lists.newArrayList("John", null, "Jane", "Adam", "Tom");  
  4.     String result = Joiner.on(",").useForNull("nameless").join(names);  
  5.    
  6.     assertEquals(result, "John,nameless,Jane,Adam,Tom");  
  7. }  



5 使用splitter方法把string转换为list 
   

Java代码 

 收藏代码

  1. @Test  
  2. public void whenCreateListFromString_thenCreated() {  
  3.     String input = "apple - banana - orange";  
  4.     List result = Splitter.on("-").trimResults()  
  5.                                           .splitToList(input);  
  6.    
  7.     assertThat(result, contains("apple", "banana", "orange"));  
  8. }  



6 使用splitter将string转为map 
  

Java代码 

 收藏代码

  1. @Test  
  2. public void whenCreateMapFromString_thenCreated() {  
  3.     String input = "John=first,Adam=second";  
  4.     Map result = Splitter.on(",")  
  5.                                          .withKeyValueSeparator("=")  
  6.                                          .split(input);  
  7.    
  8.     assertEquals("first", result.get("John"));  
  9.     assertEquals("second", result.get("Adam"));  
  10. }  



7 guava还支持使用多个分隔符来分割字符,比如 
  

Java代码 

 收藏代码

  1. @Test  
  2. public void whenSplitStringOnMultipleSeparator_thenSplit() {  
  3.     String input = "apple.banana,,orange,,.";  
  4.     List result = Splitter.onPattern("[.|,]")  
  5.                                   .omitEmptyStrings()  
  6.                                   .splitToList(input);  
  7.    
  8.     assertThat(result, contains("apple", "banana", "orange"));  
  9. }  



8 每隔多少个字符进行分隔 
  

Java代码 

 收藏代码

  1. @Test  
  2. public void whenSplitStringOnSpecificLength_thenSplit() {  
  3.     String input = "Hello world";  
  4.     List result = Splitter.fixedLength(3).splitToList(input);  
  5.    
  6.     assertThat(result, contains("Hel", "lo ", "wor", "ld"));  
  7. }  



9 还可以让splitter在分割多少个字符后停止分隔,比如 
  

Java代码 

 收藏代码

  1.    
  2. @Test  
  3. public void whenLimitSplitting_thenLimited() {  
  4.     String input = "a,b,c,d,e";  
  5.     List result = Splitter.on(",")  
  6.                                   .limit(4)  
  7.                                   .splitToList(input);  
  8.    
  9.     assertEquals(4, result.size());  
  10.     assertThat(result, contains("a", "b", "c", "d,e"));  
  11. }  
  12.    

你可能感兴趣的:(JSON)