上一篇的Guava文章,提到了Joiner。这个小结将会讲到一个与他有逆向操作的类:Splitter。
Splitter 提供将字符串生产List列表的功能。
下面给出测试类:
import org.kanpiaoxue.util.Util; import com.google.common.base.Splitter; import java.util.List; import java.util.Map; import java.util.regex.Pattern; public class UsingtheSplitterClass_02 { public static void main(String[] args) throws Exception { UsingtheSplitterClass_02 obj = new UsingtheSplitterClass_02(); obj.test(); } /** * <pre> * </pre> */ private void test() throws Exception { /** * <pre> * Splitter 的基本用法,使用指定的字符 | 来处理字符串,生成可迭代的Iterable * // output : * hello * world * test * </pre> */ Iterable<String> it = Splitter.on('|').split("hello|world|test"); for (String str : it) { System.out.println(str); } Util.print(); /** * <pre> * 使用 trimResults() 方法对每个元素去掉左右空格。 * // output : * hello * world * test * </pre> */ List<String> list = Splitter.on('|').trimResults().splitToList("hello|world| test "); for (String str : list) { System.out.println(str); } Util.print(); /** * <pre> * fixedLength(2)方法对指定的字符串"0102030405060708091011121314"按照步长是2来生成list * // output : * 01 * 02 * 03 * 04 * 05 * 06 * 07 * 08 * 09 * 10 * 11 * 12 * 13 * 14 * </pre> */ list = Splitter.fixedLength(2).splitToList("0102030405060708091011121314"); for (String str : list) { System.out.println(str); } Util.print(); /** * <pre> * 使用 limit(3) 方法来限制分割的元素为3个。 * // output : * 01 * 02 * 030405060708091011121314 * </pre> */ list = Splitter.fixedLength(2).limit(3).splitToList("0102030405060708091011121314"); for (String str : list) { System.out.println(str); } Util.print(); /** * <pre> * 使用 onPattern("[a-z]") 的方法,用知道的正则表达式[a-z]来生成list, * 用 omitEmptyStrings() 方法来忽略那些空字符串。 * // output : * 0102 * 4 * 6070 * 314 * </pre> */ list = Splitter.onPattern("[a-z]").omitEmptyStrings() .splitToList("0102add4max6070kanpiaoxue314"); for (String str : list) { System.out.println(str); } Util.print(); /** * <pre> * 使用on(Pattern separatorPattern)的方法,用知道的正则表达式[a-z]来生成list, * 用 omitEmptyStrings() 方法来忽略那些空字符串。 * // output : * 0102 * 4 * 6070 * 314 * </pre> */ Pattern pattern = Pattern.compile("[a-z]"); list = Splitter.on(pattern).omitEmptyStrings().splitToList("0102add4max6070kanpiaoxue314"); for (String str : list) { System.out.println(str); } Util.print(); /** * <pre> * 使用 omitEmptyStrings() 方法来忽略掉空字符串的元素 * // output : * [hello, world, test, last] * </pre> */ Splitter splitter = Splitter.on('|').trimResults().omitEmptyStrings(); list = splitter.splitToList("hello | world | test ||| | last"); System.out.println(list); Util.print(); /** * <pre> * 按照指定的格式,生成Map对象 * // output : * {Washington D.C=Redskins, New York City=Giants, Philadelphia=Eagles, Dallas=Cowboys} * </pre> */ Splitter.MapSplitter mapSplitter = Splitter.on("#").withKeyValueSeparator("="); String startString = "Washington D.C=Redskins#New York City=Giants#Philadelphia=Eagles#Dallas=Cowboys"; Map<String, String> map = mapSplitter.split(startString); System.out.println(map); Util.print(); } }