0%

Java 中的 split()

关于 Java 的 split()

说明

函数原型:String[] split(String regex, int limit)
另一个 String[] split(String regex) 实际上是把第二个参数 limit 传入了 0

  • regex:要匹配的正则表达式字符串
  • limit:限制匹配的次数

具体匹配规则如下:

  • limit 为正时,最多匹配 limit-1 次,得到的结果数组长度不大于 limit
  • limit 为负时,尽可能多地去匹配
  • limit0 时,尽可能多地去匹配,并把结果数组中末尾的空串都舍去

以下为 split() 官方文档 给出的示例:

1
2
3
4
5
6
7
String str = "boo:and:foo";
System.out.println(Arrays.toString(str.split(":", 2))); // 输出结果:[boo, and:foo]
System.out.println(Arrays.toString(str.split(":", 5))); // 输出结果:[boo, and, foo]
System.out.println(Arrays.toString(str.split(":", -2))); // 输出结果:[boo, and, foo]
System.out.println(Arrays.toString(str.split("o", 5))); // 输出结果:[b, , :and:f, , ]
System.out.println(Arrays.toString(str.split("o", -2))); // 输出结果:[b, , :and:f, , ]
System.out.println(Arrays.toString(str.split("o", 0))); // 输出结果:[b, , :and:f]

另外,第一个参数 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("\\\\"))); // '\b' 是特殊字符,'\' 需要写成 "\\"
觉得文章有帮助,打赏1元鼓励一下作者