1、先来看看API:/*** @param regex * the delimiting regular expression * * @return the array of strings computed by splitting this string * around matches of the given regular expression * * @throws PatternSyntaxException * if the regular expression's syntax is invalid * * @see java.util.regex.Pattern * * @since 1.4 * @spec JSR-51 */public String[] split(String regex) { return split(regex, 0);}
2、细心的同学已经观察到split方法的第一个参数是regex,是的,就是前面讲过的正则表达式还可以使用第二个参数limit,即最多返回几个字符串来一段常见的代码package chapter4;/*** Created by MyWorld on 2016/3/28.*/public class StringSplitDemo { public static void main(String[] args) { String demoStr = "Hello world tang"; String[] result = demoStr.split(" "); for (String s : result) { System.out.println(s); } }}
3、api已经了解了,输出的结果应该是Hello world tang执行下看看结果Output:Helloworldtang
4、来猜猜这种场景下的输出是什么更改下代码Code:String demoStr = "v1|v2|v3";String[] result = demoStr.split("|");
5、是v1 v2 v3 ?好执行下看看结果Output:v1|v2|v3
6、是不是很意外,为什么呢?不理解的tx再想想api里怎么说的,第一个参数是什么样的数据呢?正则表达式对了是正则表达式嘛。正则表达式30分钟入门系列不是已经讲过,“|”是用来表示字符串之间或的关系上面的例子中,regex是"|",从正常的视角来看,除了“|”什么也没有,大家是不是忘了,\b,就是表示字符前后的界定符"|"就是表示以界定符来分隔字符串,得到的就是一个一个的元素如果想得到v1 v2 v3,需要怎么做呢如果不想让“|”作为正则表达式,就加转义符改下代码Code:String[] result = demoStr.split("\\|");
7、执行下,看看结果是否与预期一致Output:v1v2v3与预期一致OK
8、细心的tx有木有受到“|”,这从此正则表达式的启发如果有多类分隔符的场景更改代码:Code:String demoStr = "v1|v2;v3";String[] result = demoStr.split("\\||;");
9、执行下看看结果,是不是得到预期的v1 v2 v3Output:v1v2v3与预期一致Ok