diff --git a/src/main/java/org/apache/commons/text/StrBuilder.java b/src/main/java/org/apache/commons/text/StrBuilder.java index 0791a1e493..063d26ece2 100644 --- a/src/main/java/org/apache/commons/text/StrBuilder.java +++ b/src/main/java/org/apache/commons/text/StrBuilder.java @@ -2275,7 +2275,7 @@ public int lastIndexOf(final char ch, int startIndex) { * @return The last index of the string, or -1 if not found. */ public int lastIndexOf(final String str) { - return lastIndexOf(str, size - 1); + return lastIndexOf(str, size); } /** @@ -2289,7 +2289,7 @@ public int lastIndexOf(final String str) { * @return The last index of the string, or -1 if not found. */ public int lastIndexOf(final String str, int startIndex) { - startIndex = startIndex >= size ? size - 1 : startIndex; + startIndex = Math.min(startIndex, size); if (str == null || startIndex < 0) { return StringUtils.INDEX_NOT_FOUND; } @@ -2297,6 +2297,9 @@ public int lastIndexOf(final String str, int startIndex) { if (strLen == 0) { return startIndex; } + if (startIndex >= size) { + startIndex = size - 1; + } if (strLen > size) { return StringUtils.INDEX_NOT_FOUND; } diff --git a/src/main/java/org/apache/commons/text/TextStringBuilder.java b/src/main/java/org/apache/commons/text/TextStringBuilder.java index 2021f8d89c..5cf467acfa 100644 --- a/src/main/java/org/apache/commons/text/TextStringBuilder.java +++ b/src/main/java/org/apache/commons/text/TextStringBuilder.java @@ -2388,7 +2388,7 @@ public int lastIndexOf(final char ch, int startIndex) { * @return The last index of the string, or -1 if not found. */ public int lastIndexOf(final String str) { - return lastIndexOf(str, size - 1); + return lastIndexOf(str, size); } /** @@ -2403,7 +2403,7 @@ public int lastIndexOf(final String str) { * @return The last index of the string, or -1 if not found. */ public int lastIndexOf(final String str, int startIndex) { - startIndex = startIndex >= size ? size - 1 : startIndex; + startIndex = Math.min(startIndex, size); if (str == null || startIndex < 0) { return StringUtils.INDEX_NOT_FOUND; } @@ -2411,6 +2411,9 @@ public int lastIndexOf(final String str, int startIndex) { if (strLen == 0) { return startIndex; } + if (startIndex >= size) { + startIndex = size - 1; + } if (strLen > size) { return StringUtils.INDEX_NOT_FOUND; } diff --git a/src/test/java/org/apache/commons/text/StrBuilderTest.java b/src/test/java/org/apache/commons/text/StrBuilderTest.java index ab82eac524..0dd55d8f44 100644 --- a/src/test/java/org/apache/commons/text/StrBuilderTest.java +++ b/src/test/java/org/apache/commons/text/StrBuilderTest.java @@ -45,6 +45,7 @@ * * @deprecated This class will be removed in 2.0. */ +@Deprecated class StrBuilderTest { private static final class MockReadable implements Readable { @@ -1219,6 +1220,9 @@ void testLastIndexOf_String() { assertEquals(-1, sb.lastIndexOf("z")); assertEquals(-1, sb.lastIndexOf((String) null)); + + assertEquals(4, sb.lastIndexOf("")); + assertEquals("".lastIndexOf(""), new StringBuilder().lastIndexOf("")); } @Test diff --git a/src/test/java/org/apache/commons/text/TextStringBuilderTest.java b/src/test/java/org/apache/commons/text/TextStringBuilderTest.java index 5c2e117eb2..2b12a029da 100644 --- a/src/test/java/org/apache/commons/text/TextStringBuilderTest.java +++ b/src/test/java/org/apache/commons/text/TextStringBuilderTest.java @@ -1394,6 +1394,9 @@ void testLastIndexOf_String() { assertEquals(-1, sb.lastIndexOf("z")); assertEquals(-1, sb.lastIndexOf((String) null)); + + assertEquals(4, sb.lastIndexOf("")); + assertEquals("".lastIndexOf(""), new StringBuilder().lastIndexOf("")); } @Test