diff --git a/src/main/java/org/apache/commons/lang3/StringUtils.java b/src/main/java/org/apache/commons/lang3/StringUtils.java
index 4af966e52bf..cbadf145a95 100644
--- a/src/main/java/org/apache/commons/lang3/StringUtils.java
+++ b/src/main/java/org/apache/commons/lang3/StringUtils.java
@@ -9245,5 +9245,25 @@ public static int[] toCodePoints(CharSequence str) {
index += Character.charCount(result[i]);
}
return result;
+ }
+
+ /**
+ *
Finds index of all the occurences of given search key found in source string.
+ *
+ * @param source
+ * @param searchKey
+ * @return list of integer of indexes.
+ */
+ public static List indexesOf(final CharSequence source, final Character searchKey) {
+ if(isEmpty(source) || searchKey == CharUtils.NUL ) {
+ return null;
+ }
+ List indexList = new ArrayList<>();
+ for(int i = 0 ; i < source.length() ; i++) {
+ if(searchKey.equals(source.charAt(i))) {
+ indexList.add(i);
+ }
+ }
+ return indexList;
}
}
diff --git a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java
index 615030eccc4..d765ecb9e03 100644
--- a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java
@@ -19,6 +19,7 @@
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
@@ -3229,6 +3230,14 @@ public void testToCodePoints() throws Exception {
assertNull(StringUtils.toCodePoints(null));
assertArrayEquals(ArrayUtils.EMPTY_INT_ARRAY, StringUtils.toCodePoints(""));
}
+
+ @Test
+ public void testIndexesOf() throws Exception {
+ assertEquals(null, 3, StringUtils.indexesOf("anagram", 'a').size());
+ assertEquals(null, 2, StringUtils.indexesOf("Reader", 'e').size());
+ assertNull(StringUtils.indexesOf("people", null));
+ assertNotEquals(null, 2, StringUtils.indexesOf("Automatic", 'o').size());
+ }
@Test
public void testGetDigits() {