关于 Java 的 split()
说明
函数原型:String[] split(String regex, int limit)
另一个 String[] split(String regex) 实际上是把第二个参数 limit 传入了 0
regex:要匹配的正则表达式字符串
limit:限制匹配的次数
具体匹配规则如下:
- 当
limit 为正时,最多匹配 limit-1 次,得到的结果数组长度不大于 limit
- 当
limit 为负时,尽可能多地去匹配
- 当
limit 为 0 时,尽可能多地去匹配,并把结果数组中末尾的空串都舍去。
以下为 split() 官方文档 给出的示例:
1 2 3 4 5 6 7
| String str = "boo:and:foo"; System.out.println(Arrays.toString(str.split(":", 2))); System.out.println(Arrays.toString(str.split(":", 5))); System.out.println(Arrays.toString(str.split(":", -2))); System.out.println(Arrays.toString(str.split("o", 5))); System.out.println(Arrays.toString(str.split("o", -2))); System.out.println(Arrays.toString(str.split("o", 0)));
|
另外,第一个参数 regex 是一个正则表达式字符串,某些特殊字符需要进行转义。如下所示,每行代码输出结果均为:[a, b]
1 2 3 4 5 6
| System.out.println(Arrays.toString("a.b".split("\\."))); System.out.println(Arrays.toString("a$b".split("\\$"))); System.out.println(Arrays.toString("a|b".split("\\|"))); System.out.println(Arrays.toString("a*b".split("\\*"))); System.out.println(Arrays.toString("a^b".split("\\^"))); System.out.println(Arrays.toString("a\\b".split("\\\\")));
|