分割字符串是 Java 编程中常用的操作,相信很多同学都知道,String 类中的 split 方法可以进行字符串分割,然而日常使用起来却仅限于 str.split( "-"),其中 "-"为分隔符。其实 split 方法的功能非常强大,可以更优雅地使用它分割字符串。
使用方法
split 方法的一种声明为,
- public String[] split(String regex)
其中 regex 指的是正则表达式分隔符,我们平时使用单个字符作为分隔符,其实可以看作特殊的正则表达式,特殊之处在于这种表达式只匹配它自身,如 "-" 只匹配 "-", 示例如下:
- String string = "86-15003455666";
- String[] parts = string.split("-");
- String part1 = parts[0]; // 86
- String part2 = parts[1]; // 15003455666
split 方法的另一个声明为:
- public String[] split(String regex, int limit)
regex 指的是 正则表达式分隔符,limit 指定的则是分割的份数,举个例子就明白了
- String string = "004-556-42";
- String[] parts = string.split("-", 2); // 限定分割两份
- String part1 = parts[0]; // 004
- String part2 = parts[1]; // 556-42
而在某些场景下,我们可能想要在结果中保留分隔符,这也是可以做到了设置分隔符与分割后左侧的结果相连,
- String string = "86-15003455666";
- String[] parts = string.split("(?<=-)");
- String part1 = parts[0]; // 86-
- String part2 = parts[1]; // 15003455666
设置分隔符与分割后右侧的结果相连,
- String string = "86-15003455666";
- String[] parts = string.split("(?=-)");
- String part1 = parts[0]; // 86
- String part2 = parts[1]; // -15003455666
机智的你可能已经发现了,其实分割方法的精妙之处,全在于正则表达式 regex 的设置,正则表达式还是要好好学习的!