日期:2014-05-20 浏览次数:20707 次
public String[] split(String regex, int limit) {
/* fastpath if the regex is a
(1)one-char String and this character is not one of the
RegEx's meta characters ".$
------解决方案--------------------
()[{^?*+\\", or
(2)two-char String and the first char is the backslash and
the second is not the ascii digit or ascii letter.
*/
char ch = 0;
if (((regex.value.length == 1 &&
".$
------解决方案--------------------
()[{^?*+\\".indexOf(ch = regex.charAt(0)) == -1)
------解决方案--------------------
(regex.length() == 2 &&
regex.charAt(0) == '\\' &&
(((ch = regex.charAt(1))-'0')
------解决方案--------------------
('9'-ch)) < 0 &&
((ch-'a')
------解决方案--------------------
('z'-ch)) < 0 &&
((ch-'A')
------解决方案--------------------
('Z'-ch)) < 0)) &&
(ch < Character.MIN_HIGH_SURROGATE
------解决方案--------------------
ch > Character.MAX_LOW_SURROGATE))
{
int off = 0;
int next = 0;
boolean limited = limit > 0;
ArrayList<String> list = new ArrayList<>();
while ((next = indexOf(ch, off)) != -1) {
if (!limited
------解决方案--------------------
list.size() < limit - 1) {
list.add(substring(off, next));
off = next + 1;
} else { // last one
//assert (list.size() == limit - 1);
list.add(substring(off, value.length));
off = value.length;
break;
}