Google Guava的splitter,分割字符串的用法
package com.sxd.swapping.guava; import com.google.common.base.CharMatcher; import com.google.common.base.Splitter; import org.assertj.core.util.Lists; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.ArrayList; /** * @Author: SXD * @Description: Google Guava的splitter,分割字符串的用法 * @Date: create in 2019/11/12 9:52 */ @RunWith(SpringRunner.class) @SpringBootTest public class GuavaSplitterTest { String str = "a,,b, c,,,,2312312342,dasdaaa ,德瑪西亞, 艾歐尼亞,寒冰之地 ,abCDefGHdasIJklmnoPpQqZz,ooAAdas"; /** * 按 指定字符 拆分源字符串 */ @Test public void splitTest(){ Iterable<String> split = Splitter.on(",").split(str); printResult(split); } /** * 按 指定字符 拆分源字符串 * 並去除 空值 */ @Test public void omitEmptyStringsTest(){ Iterable<String> split = Splitter.on(",").omitEmptyStrings().split(str); printResult(split); } /** * 按 指定字符 拆分源字符串 * 並去除空值 * 並去除額外空格 */ @Test public void trimResultsTest(){ Iterable<String> split = Splitter.on(",").trimResults().omitEmptyStrings().split(str); printResult(split); } /** * 按 指定字符 拆分源字符串 * 並去除空值 * 並 按照指定類型 去除每一個分隔元素內的 指定類型 */ @Test public void trimResultsWithCharTest(){ //去除 元素中包含的數字 Iterable<String> split1 = Splitter.on(",").trimResults(CharMatcher.digit()).omitEmptyStrings().split(str); printResult(split1); //去除 元素中的 空格 Iterable<String> split2 = Splitter.on(",").trimResults(CharMatcher.whitespace()).omitEmptyStrings().split(str); printResult(split2); //去除 元素中的 空格 Iterable<String> split3 = Splitter.on(",").trimResults(CharMatcher.breakingWhitespace()).omitEmptyStrings().split(str); printResult(split3); //去除 元素中的 包含在ASCII中的所有元素 [留下的:例如中文] Iterable<String> split4 = Splitter.on(",").trimResults(CharMatcher.ascii()).omitEmptyStrings().split(str); printResult(split4); //去除 元素中的 任何元素 Iterable<String> split5 = Splitter.on(",").trimResults(CharMatcher.any()).omitEmptyStrings().split(str); printResult(split5); //不去除 元素中的 任何元素 Iterable<String> split6 = Splitter.on(",").trimResults(CharMatcher.none()).omitEmptyStrings().split(str); printResult(split6); //去除 元素左右兩側的在a-z范圍內的元素 Iterable<String> split9 = Splitter.on(",").trimResults(CharMatcher.inRange('a','z')).omitEmptyStrings().split(str); printResult(split9); //去除 元素左右兩側中不包含a 的元素 Iterable<String> split10 = Splitter.on(",").trimResults(CharMatcher.isNot('a')).omitEmptyStrings().split(str); printResult(split10); } /** * 將 Iterable<String> 轉化為 List<String> * * 最終打印結果集 * @param split Iterable<String> */ private void printResult(Iterable<String> split){ ArrayList<String> result = Lists.newArrayList(split); System.out.println("結果集大小:"+result.size()); System.out.println(">>>>輸入結果集:"); for (String s : result) { System.out.println(s); } System.out.println(); } }
效果可以自行 粘貼 ,單元測試直接運行即可。