1.1 --- a/rt/emul/mini/src/main/java/java/lang/String.java Thu Apr 04 09:46:06 2013 +0200
1.2 +++ b/rt/emul/mini/src/main/java/java/lang/String.java Mon Sep 09 15:26:12 2013 +0200
1.3 @@ -2315,8 +2315,35 @@
1.4 * @spec JSR-51
1.5 */
1.6 public String[] split(String regex, int limit) {
1.7 - throw new UnsupportedOperationException("Needs regexp");
1.8 + if (limit <= 0) {
1.9 + Object[] arr = splitImpl(this, regex, Integer.MAX_VALUE);
1.10 + int to = arr.length;
1.11 + if (limit == 0) {
1.12 + while (to > 1 && ((String)arr[--to]).isEmpty()) {
1.13 + }
1.14 + to++;
1.15 + }
1.16 + String[] ret = new String[to];
1.17 + System.arraycopy(arr, 0, ret, 0, to);
1.18 + return ret;
1.19 + } else {
1.20 + Object[] arr = splitImpl(this, regex, limit);
1.21 + String[] ret = new String[arr.length];
1.22 + int pos = 0;
1.23 + for (int i = 0; i < arr.length; i++) {
1.24 + final String s = (String)arr[i];
1.25 + ret[i] = s;
1.26 + pos = indexOf(s, pos) + s.length();
1.27 + }
1.28 + ret[arr.length - 1] += substring(pos);
1.29 + return ret;
1.30 + }
1.31 }
1.32 +
1.33 + @JavaScriptBody(args = { "str", "regex", "limit"}, body =
1.34 + "return str.split(new RegExp(regex), limit);"
1.35 + )
1.36 + private static native Object[] splitImpl(String str, String regex, int limit);
1.37
1.38 /**
1.39 * Splits this string around matches of the given <a