在平常的编码中,可能会经常用到String的split方法,用来将字符串分割成数个对象进行处理。但是往往会碰到分割结果不正确的时候,到底是什么原因呢,进入java的API进行彻底的分析理解吧。
pulic String[] split(String regex, int limit){
return Pattern.compile(regex).split(this,limit);
}
看到这里你应该就能大概明白其中的原委了,我们不去深究Pattern的split方法是如何实现分割的,我们只要看到实际上我们传入的分隔符其实是被看待成一个正则表达式去解析的,因此String的split这个方法其实支持的是正则表达式的分割,而不简简单单的仅支持一个字符串的分割符。因此,如果你传入了一个字符串作为分割符,而恰巧这个字符串含有正则表达式的关键字,那么恭喜了,你可能会得到一个被分割的支离破碎的数组或者一个血淋淋的ERROR。
所以,在非要以特殊字符进行分割的情况下,想要得到正确的结果,我们要对这些关键字进行反斜杠转义或者用[]来包围起来。
例如我们要对字符串 “12345*6789*9876*54321” 进行*符号的分割,那么传入的分割符应该是[*]或者\\*。
常见的关键字比如 * , | ,? , + , . , ^ , $ , 还有一些括号吧