1. 多种拆分方式
1.1 按分隔符拆分
String line1 = "C|Java|C++|Go|Python|Scala";
String[] split1 = line1.split("\\|");
System.out.println("split1 = " + Arrays.toString(split1));
Iterable<String> iter = Splitter.on("|").split(line1);
System.out.println("iter = " + iter);
1.2 按长度拆分
String line4 = "qqqaaazzzwwwss";
Iterable<String> iter5 = Splitter.fixedLength(3).split(line4);
System.out.println("iter5 = " + iter5);
1.3 按正则拆分
String line5 = "qqq2aaazz4zwwawss";
String[] split4 = line5.split("[0-9]");
System.out.println("split4 = " + Arrays.toString(split4));
Iterable<String> iter6 = Splitter.onPattern("[0-9]").split(line5);
System.out.println("iter6 = " + iter6);
1.4 只拆分前几个元素
String line6 = "C|Java|C++|Go|Python|Scala";
String[] split3 = line6.split("\\|", 3);
System.out.println("split3 = " + Arrays.toString(split3));
Iterable<String> iter7 = Splitter.on("|").limit(3).split(line6);
System.out.println("iter7 = " + iter7);
2. 拆分后续处理
2.1 删除空字符串元素
String line2 = "C|Java|C++|Go|Python|Scala||";
String[] split2 = line2.split("\\|");
System.out.println("split2 = " + Arrays.toString(split2));
Iterable<String> iter2 = Splitter.on("|").split(line2);
System.out.println("iter2 = " + iter2);
Iterable<String> iter3 = Splitter.on("|").omitEmptyStrings().split(line2);
System.out.println("iter3 = " + iter3);
2.2 对结果元素进行trim(默认去掉空格)
String line3 = "C| Java |C++|Go |Python|Scala";
Iterable<String> iter4 = Splitter.on("|").trimResults().split(line3);
System.out.println("iter4 = " + iter4);
2.3 对拆分结果再次拆分,生成Map
String line7 = "k1->v1|k2->v2|k3->v3";
Map<String, String> map = Splitter.on("|").withKeyValueSeparator("->").split(line7);
System.out.println("map = " + map);
附:Scala示例
/**
* Split测试
*
* @author ALion
* @version 2019/2/3 1:12
*/
object ScalaSplitDemo {
def main(args: Array[String]): Unit = {
val line1 = "C|aJava| C++ |Go| Python|Scala"
// 按分隔符拆分
val arr1: Array[String] = line1.split("\\|")
println(s"arr1 = ${arr1.toBuffer}")
// 对结果元素进行trim,去掉空格
val arr2: Array[String] = line1.split("\\|").map(_.trim)
println(s"arr1 = ${arr2.toBuffer}")
// 在指定的角标处将字符串一分为二,生成元组
val tuple = line1.splitAt(3)
println(s"tuple = $tuple")
// 指定多个分隔符
val line2 = "C|Java,C++|Go,Python\tScala"
val arr3: Array[String] = line2.split(Array('|', ',', '\t'))
println(s"arr1 = ${arr3.toBuffer}")
// 拆分为Map
val line3 = "k1=v1|k2=v2|k3=v3"
val map = line3.split("\\|")
.map { kv =>
val fields = kv.split("=")
(fields(0), fields(1))
}.toMap
println(s"map = $map")
// 按长度拆分
val iter = "qqqaaazzzwwwss".grouped(3)
println(s"iter = ${iter.toBuffer}")
}
}