From dd82b58dadce3721da80ae2170f314c046aa290d Mon Sep 17 00:00:00 2001 From: Joel Dice <git@seibutsu.mailsnare.net> Date: Wed, 12 Aug 2009 19:39:29 -0600 Subject: [PATCH] add String.lastIndexOf(String,int); defer to Pattern.split in String.split --- classpath/java/lang/String.java | 50 ++++++++------------------------- 1 file changed, 11 insertions(+), 39 deletions(-) diff --git a/classpath/java/lang/String.java b/classpath/java/lang/String.java index 79dcc8ee75..1ecb53629c 100644 --- a/classpath/java/lang/String.java +++ b/classpath/java/lang/String.java @@ -357,9 +357,13 @@ public final class String } public int lastIndexOf(String s) { - if (s.length == 0) return length; + return lastIndexOf(s, length - s.length); + } - for (int i = length - s.length; i >= 0; --i) { + public int lastIndexOf(String s, int lastIndex) { + if (s.length == 0) return lastIndex; + + for (int i = Math.min(length - s.length, lastIndex); i >= 0; --i) { int j = 0; for (; j < s.length && i + j < length; ++j) { if (charAt(i + j) != s.charAt(j)) { @@ -521,44 +525,12 @@ public final class String } } - public String[] split(String s) { - String[] array = new String[(length / s.length) + 1]; - int index = 0; - int last = 0; - int position = 0; - for (int i = 0; i < length - s.length + 1;) { - int j; - for (j = 0; j < s.length; ++j) { - if (charAt(i + j) != s.charAt(j)) { - break; - } - } + public String[] split(String regex) { + return split(regex, 0); + } - if (j == s.length) { - if (i > 0) { - if (i > position) { - last = index; - } - array[index++] = substring(position, i); - } - i = position = i + s.length; - } else { - ++ i; - } - } - - if (position < length) { - last = index; - array[index] = substring(position, length); - } - - if (last + 1 < array.length) { - String[] a = new String[last + 1]; - System.arraycopy(array, 0, a, 0, last + 1); - array = a; - } - - return array; + public String[] split(String regex, int limit) { + return Pattern.compile(regex).split(this, limit); } public CharSequence subSequence(int start, int end) {