diff --git a/src/main/java/org/apache/commons/lang3/StringUtils.java b/src/main/java/org/apache/commons/lang3/StringUtils.java index cf1f4c4c5..97973df9a 100644 --- a/src/main/java/org/apache/commons/lang3/StringUtils.java +++ b/src/main/java/org/apache/commons/lang3/StringUtils.java @@ -8690,6 +8690,41 @@ public static String substringBefore(final String str, final String separator) { } return str.substring(0, pos); } + + /** + * Gets the substring before the last occurrence of a separator. + * The separator is not returned. + * + *
A {@code null} string input will return {@code null}. + * An empty ("") string input will return the empty string.
+ * + *If nothing is found, the string input is returned.
+ * + *+ * StringUtils.substringBeforeLast(null, *) = null + * StringUtils.substringBeforeLast("", *) = "" + * StringUtils.substringBeforeLast("abcba", 'b') = "abc" + * StringUtils.substringBeforeLast("abc", 'c') = "ab" + * StringUtils.substringBeforeLast("a", 'a') = "" + * StringUtils.substringBeforeLast("a", 'z') = "a" + *+ * + * @param str the String to get a substring from, may be null + * @param separator the character (Unicode code point) to search. + * @return the substring before the last occurrence of the separator, + * {@code null} if null String input + * @since 3.12.1 + */ + public static String substringBeforeLast(final String str, final int separator) { + if (isEmpty(str)) { + return str; + } + final int pos = str.lastIndexOf(separator); + if (pos == INDEX_NOT_FOUND) { + return str; + } + return str.substring(0, pos); + } /** * Gets the substring before the last occurrence of a separator.