scolebourne 2003/07/19 16:29:07
Modified: lang/src/test/org/apache/commons/lang
StringUtilsEqualsIndexOfTest.java
lang/src/java/org/apache/commons/lang StringUtils.java
Log:
Add new methods for null-safe indexOf/lastIndexOf
Add new methods for contains
Revision Changes Path
1.3 +250 -1
jakarta-commons/lang/src/test/org/apache/commons/lang/StringUtilsEqualsIndexOfTest.java
Index: StringUtilsEqualsIndexOfTest.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/lang/src/test/org/apache/commons/lang/StringUtilsEqualsIndexOfTest.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- StringUtilsEqualsIndexOfTest.java 23 Mar 2003 21:50:58 -0000 1.2
+++ StringUtilsEqualsIndexOfTest.java 19 Jul 2003 23:29:06 -0000 1.3
@@ -115,6 +115,131 @@
assertEquals(false, StringUtils.equalsIgnoreCase(null, FOO));
}
+ //-----------------------------------------------------------------------
+ public void testIndexOf_char() {
+ assertEquals(-1, StringUtils.indexOf(null, ' '));
+ assertEquals(-1, StringUtils.indexOf("", ' '));
+ assertEquals(0, StringUtils.indexOf("aabaabaa", 'a'));
+ assertEquals(2, StringUtils.indexOf("aabaabaa", 'b'));
+ }
+
+ public void testIndexOf_charInt() {
+ assertEquals(-1, StringUtils.indexOf(null, ' ', 0));
+ assertEquals(-1, StringUtils.indexOf(null, ' ', -1));
+ assertEquals(-1, StringUtils.indexOf("", ' ', 0));
+ assertEquals(-1, StringUtils.indexOf("", ' ', -1));
+ assertEquals(0, StringUtils.indexOf("aabaabaa", 'a', 0));
+ assertEquals(2, StringUtils.indexOf("aabaabaa", 'b', 0));
+ assertEquals(5, StringUtils.indexOf("aabaabaa", 'b', 3));
+ assertEquals(-1, StringUtils.indexOf("aabaabaa", 'b', 9));
+ assertEquals(2, StringUtils.indexOf("aabaabaa", 'b', -1));
+ }
+
+ public void testIndexOf_String() {
+ assertEquals(-1, StringUtils.indexOf(null, null));
+ assertEquals(-1, StringUtils.indexOf("", null));
+ assertEquals(0, StringUtils.indexOf("", ""));
+ assertEquals(0, StringUtils.indexOf("aabaabaa", "a"));
+ assertEquals(2, StringUtils.indexOf("aabaabaa", "b"));
+ assertEquals(1, StringUtils.indexOf("aabaabaa", "ab"));
+ }
+
+ public void testIndexOf_StringInt() {
+ assertEquals(-1, StringUtils.indexOf(null, null, 0));
+ assertEquals(-1, StringUtils.indexOf(null, null, -1));
+ assertEquals(-1, StringUtils.indexOf(null, "", 0));
+ assertEquals(-1, StringUtils.indexOf(null, "", -1));
+ assertEquals(-1, StringUtils.indexOf("", null, 0));
+ assertEquals(-1, StringUtils.indexOf("", null, -1));
+ assertEquals(0, StringUtils.indexOf("", "", 0));
+ assertEquals(0, StringUtils.indexOf("", "", -1));
+ assertEquals(0, StringUtils.indexOf("", "", 9));
+ assertEquals(0, StringUtils.indexOf("abc", "", 0));
+ assertEquals(0, StringUtils.indexOf("abc", "", -1));
+ assertEquals(3, StringUtils.indexOf("abc", "", 9));
+ assertEquals(0, StringUtils.indexOf("aabaabaa", "a", 0));
+ assertEquals(2, StringUtils.indexOf("aabaabaa", "b", 0));
+ assertEquals(1, StringUtils.indexOf("aabaabaa", "ab", 0));
+ assertEquals(5, StringUtils.indexOf("aabaabaa", "b", 3));
+ assertEquals(-1, StringUtils.indexOf("aabaabaa", "b", 9));
+ assertEquals(2, StringUtils.indexOf("aabaabaa", "b", -1));
+ }
+
+ //-----------------------------------------------------------------------
+ public void testLastIndexOf_char() {
+ assertEquals(-1, StringUtils.lastIndexOf(null, ' '));
+ assertEquals(-1, StringUtils.lastIndexOf("", ' '));
+ assertEquals(7, StringUtils.lastIndexOf("aabaabaa", 'a'));
+ assertEquals(5, StringUtils.lastIndexOf("aabaabaa", 'b'));
+ }
+
+ public void testLastIndexOf_charInt() {
+ assertEquals(-1, StringUtils.lastIndexOf(null, ' ', 0));
+ assertEquals(-1, StringUtils.lastIndexOf(null, ' ', -1));
+ assertEquals(-1, StringUtils.lastIndexOf("", ' ', 0));
+ assertEquals(-1, StringUtils.lastIndexOf("", ' ', -1));
+ assertEquals(7, StringUtils.lastIndexOf("aabaabaa", 'a', 8));
+ assertEquals(5, StringUtils.lastIndexOf("aabaabaa", 'b', 8));
+ assertEquals(2, StringUtils.lastIndexOf("aabaabaa", 'b', 3));
+ assertEquals(5, StringUtils.lastIndexOf("aabaabaa", 'b', 9));
+ assertEquals(-1, StringUtils.lastIndexOf("aabaabaa", 'b', -1));
+ }
+
+ public void testLastIndexOf_String() {
+ assertEquals(-1, StringUtils.lastIndexOf(null, null));
+ assertEquals(-1, StringUtils.lastIndexOf("", null));
+ assertEquals(0, StringUtils.lastIndexOf("", ""));
+ assertEquals(7, StringUtils.lastIndexOf("aabaabaa", "a"));
+ assertEquals(5, StringUtils.lastIndexOf("aabaabaa", "b"));
+ assertEquals(4, StringUtils.lastIndexOf("aabaabaa", "ab"));
+ }
+
+ public void testLastIndexOf_StringInt() {
+ assertEquals(-1, StringUtils.lastIndexOf(null, null, 0));
+ assertEquals(-1, StringUtils.lastIndexOf(null, null, -1));
+ assertEquals(-1, StringUtils.lastIndexOf(null, "", 0));
+ assertEquals(-1, StringUtils.lastIndexOf(null, "", -1));
+ assertEquals(-1, StringUtils.lastIndexOf("", null, 0));
+ assertEquals(-1, StringUtils.lastIndexOf("", null, -1));
+ assertEquals(0, StringUtils.lastIndexOf("", "", 0));
+ assertEquals(-1, StringUtils.lastIndexOf("", "", -1));
+ assertEquals(0, StringUtils.lastIndexOf("", "", 9));
+ assertEquals(0, StringUtils.lastIndexOf("abc", "", 0));
+ assertEquals(-1, StringUtils.lastIndexOf("abc", "", -1));
+ assertEquals(3, StringUtils.lastIndexOf("abc", "", 9));
+ assertEquals(7, StringUtils.lastIndexOf("aabaabaa", "a", 8));
+ assertEquals(5, StringUtils.lastIndexOf("aabaabaa", "b", 8));
+ assertEquals(4, StringUtils.lastIndexOf("aabaabaa", "ab", 8));
+ assertEquals(2, StringUtils.lastIndexOf("aabaabaa", "b", 3));
+ assertEquals(5, StringUtils.lastIndexOf("aabaabaa", "b", 9));
+ assertEquals(-1, StringUtils.lastIndexOf("aabaabaa", "b", -1));
+ }
+
+ //-----------------------------------------------------------------------
+ public void contains_char() {
+ assertEquals(false, StringUtils.contains(null, ' '));
+ assertEquals(false, StringUtils.contains("", ' '));
+ assertEquals(true, StringUtils.contains("abc", 'a'));
+ assertEquals(true, StringUtils.contains("abc", 'b'));
+ assertEquals(true, StringUtils.contains("abc", 'c'));
+ assertEquals(false, StringUtils.contains("abc", 'z'));
+ }
+
+ public void contains_String() {
+ assertEquals(false, StringUtils.contains(null, null));
+ assertEquals(false, StringUtils.contains(null, ""));
+ assertEquals(false, StringUtils.contains(null, "a"));
+ assertEquals(false, StringUtils.contains("", null));
+ assertEquals(true, StringUtils.contains("", ""));
+ assertEquals(false, StringUtils.contains("", "a"));
+ assertEquals(true, StringUtils.contains("abc", "a"));
+ assertEquals(true, StringUtils.contains("abc", "b"));
+ assertEquals(true, StringUtils.contains("abc", "c"));
+ assertEquals(true, StringUtils.contains("abc", "abc"));
+ assertEquals(false, StringUtils.contains("abc", "z"));
+ }
+
+ //-----------------------------------------------------------------------
public void testIndexOfAny() {
assertEquals(-1, StringUtils.indexOfAny(null, null));
assertEquals(-1, StringUtils.indexOfAny(null, FOOBAR_SUB_ARRAY));
@@ -131,6 +256,130 @@
assertEquals(3, StringUtils.lastIndexOfAny(FOOBAR, FOOBAR_SUB_ARRAY));
assertEquals(-1, StringUtils.lastIndexOfAny(FOOBAR, new String[0]));
assertEquals(-1, StringUtils.lastIndexOfAny(FOOBAR, new String[] {"llll"}));
+ }
+
+ //-----------------------------------------------------------------------
+ public void testIndexOfAnyBut() {
+ String str1 = "a";
+ String str2 = "b";
+ String str3 = "ab";
+ String chars1= "b";
+ String chars2= "a";
+ String chars3= "ab";
+ assertEquals(-1, StringUtils.indexOfAnyBut(null, (String) null));
+ assertEquals(-1, StringUtils.indexOfAnyBut("", (String) null));
+ assertEquals(-1, StringUtils.indexOfAnyBut(null, ""));
+ assertEquals(0, StringUtils.indexOfAnyBut(str1, ""));
+ assertEquals(-1, StringUtils.indexOfAnyBut("", ""));
+ assertEquals(-1, StringUtils.indexOfAnyBut("", chars1));
+ assertEquals(0, StringUtils.indexOfAnyBut(str1, chars1));
+ assertEquals(-1, StringUtils.indexOfAnyBut(str1, chars2));
+ assertEquals(-1, StringUtils.indexOfAnyBut(str1, chars3));
+ assertEquals(-1, StringUtils.indexOfAnyBut(str2, chars1));
+ assertEquals(0, StringUtils.indexOfAnyBut(str2, chars2));
+ assertEquals(-1, StringUtils.indexOfAnyBut(str2, chars3));
+ assertEquals(0, StringUtils.indexOfAnyBut(str3, chars1));
+ assertEquals(1, StringUtils.indexOfAnyBut(str3, chars2));
+ assertEquals(-1, StringUtils.indexOfAnyBut(str3, chars3));
+ }
+
+ //-----------------------------------------------------------------------
+ public void testContainsOnly_String() {
+ String str1 = "a";
+ String str2 = "b";
+ String str3 = "ab";
+ String chars1= "b";
+ String chars2= "a";
+ String chars3= "ab";
+ assertEquals(false, StringUtils.containsOnly(null, (String) null));
+ assertEquals(false, StringUtils.containsOnly("", (String) null));
+ assertEquals(false, StringUtils.containsOnly(null, ""));
+ assertEquals(false, StringUtils.containsOnly(str1, ""));
+ assertEquals(true, StringUtils.containsOnly("", ""));
+ assertEquals(true, StringUtils.containsOnly("", chars1));
+ assertEquals(false, StringUtils.containsOnly(str1, chars1));
+ assertEquals(true, StringUtils.containsOnly(str1, chars2));
+ assertEquals(true, StringUtils.containsOnly(str1, chars3));
+ assertEquals(true, StringUtils.containsOnly(str2, chars1));
+ assertEquals(false, StringUtils.containsOnly(str2, chars2));
+ assertEquals(true, StringUtils.containsOnly(str2, chars3));
+ assertEquals(false, StringUtils.containsOnly(str3, chars1));
+ assertEquals(false, StringUtils.containsOnly(str3, chars2));
+ assertEquals(true, StringUtils.containsOnly(str3, chars3));
+ }
+
+ public void testContainsOnly_CharArray() {
+ String str1 = "a";
+ String str2 = "b";
+ String str3 = "ab";
+ char[] chars1= {'b'};
+ char[] chars2= {'a'};
+ char[] chars3= {'a', 'b'};
+ char[] emptyChars = new char[0];
+ assertEquals(false, StringUtils.containsOnly(null, (char[]) null));
+ assertEquals(false, StringUtils.containsOnly("", (char[]) null));
+ assertEquals(false, StringUtils.containsOnly(null, emptyChars));
+ assertEquals(false, StringUtils.containsOnly(str1, emptyChars));
+ assertEquals(true, StringUtils.containsOnly("", emptyChars));
+ assertEquals(true, StringUtils.containsOnly("", chars1));
+ assertEquals(false, StringUtils.containsOnly(str1, chars1));
+ assertEquals(true, StringUtils.containsOnly(str1, chars2));
+ assertEquals(true, StringUtils.containsOnly(str1, chars3));
+ assertEquals(true, StringUtils.containsOnly(str2, chars1));
+ assertEquals(false, StringUtils.containsOnly(str2, chars2));
+ assertEquals(true, StringUtils.containsOnly(str2, chars3));
+ assertEquals(false, StringUtils.containsOnly(str3, chars1));
+ assertEquals(false, StringUtils.containsOnly(str3, chars2));
+ assertEquals(true, StringUtils.containsOnly(str3, chars3));
+ }
+
+ public void testContainsNone_String() {
+ String str1 = "a";
+ String str2 = "b";
+ String str3 = "ab.";
+ String chars1= "b";
+ String chars2= ".";
+ String chars3= "cd";
+ assertEquals(true, StringUtils.containsNone(null, (String) null));
+ assertEquals(true, StringUtils.containsNone("", (String) null));
+ assertEquals(true, StringUtils.containsNone(null, ""));
+ assertEquals(true, StringUtils.containsNone(str1, ""));
+ assertEquals(true, StringUtils.containsNone("", ""));
+ assertEquals(true, StringUtils.containsNone("", chars1));
+ assertEquals(true, StringUtils.containsNone(str1, chars1));
+ assertEquals(true, StringUtils.containsNone(str1, chars2));
+ assertEquals(true, StringUtils.containsNone(str1, chars3));
+ assertEquals(false, StringUtils.containsNone(str2, chars1));
+ assertEquals(true, StringUtils.containsNone(str2, chars2));
+ assertEquals(true, StringUtils.containsNone(str2, chars3));
+ assertEquals(false, StringUtils.containsNone(str3, chars1));
+ assertEquals(false, StringUtils.containsNone(str3, chars2));
+ assertEquals(true, StringUtils.containsNone(str3, chars3));
+ }
+
+ public void testContainsNone_CharArray() {
+ String str1 = "a";
+ String str2 = "b";
+ String str3 = "ab.";
+ char[] chars1= {'b'};
+ char[] chars2= {'.'};
+ char[] chars3= {'c', 'd'};
+ char[] emptyChars = new char[0];
+ assertEquals(true, StringUtils.containsNone(null, (char[]) null));
+ assertEquals(true, StringUtils.containsNone("", (char[]) null));
+ assertEquals(true, StringUtils.containsNone(null, emptyChars));
+ assertEquals(true, StringUtils.containsNone(str1, emptyChars));
+ assertEquals(true, StringUtils.containsNone("", emptyChars));
+ assertEquals(true, StringUtils.containsNone("", chars1));
+ assertEquals(true, StringUtils.containsNone(str1, chars1));
+ assertEquals(true, StringUtils.containsNone(str1, chars2));
+ assertEquals(true, StringUtils.containsNone(str1, chars3));
+ assertEquals(false, StringUtils.containsNone(str2, chars1));
+ assertEquals(true, StringUtils.containsNone(str2, chars2));
+ assertEquals(true, StringUtils.containsNone(str2, chars3));
+ assertEquals(false, StringUtils.containsNone(str3, chars1));
+ assertEquals(false, StringUtils.containsNone(str3, chars2));
+ assertEquals(true, StringUtils.containsNone(str3, chars3));
}
}
1.67 +312 -2
jakarta-commons/lang/src/java/org/apache/commons/lang/StringUtils.java
Index: StringUtils.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/lang/src/java/org/apache/commons/lang/StringUtils.java,v
retrieving revision 1.66
retrieving revision 1.67
diff -u -r1.66 -r1.67
--- StringUtils.java 19 Jul 2003 21:55:05 -0000 1.66
+++ StringUtils.java 19 Jul 2003 23:29:06 -0000 1.67
@@ -465,6 +465,310 @@
//-----------------------------------------------------------------------
/**
+ * <p>Finds the first index within a String, handling <code>null</code>.
+ * This method uses [EMAIL PROTECTED] String#indexOf(int)}</p>
+ *
+ * <p>A <code>null</code> String will return <code>-1</code>.</p>
+ *
+ * <pre>
+ * StringUtils.indexOf(null, ' ') = -1
+ * StringUtils.indexOf("", ' ') = -1
+ * StringUtils.indexOf("aabaabaa", 'a') = 0
+ * StringUtils.indexOf("aabaabaa", 'b') = 2
+ * </pre>
+ *
+ * @param str the String to check, may be null
+ * @param searchChar the character to find
+ * @return the first index of the search character,
+ * -1 if no match or <code>null</code> string input
+ */
+ public static int indexOf(String str, char searchChar) {
+ if (str == null || str.length() == 0) {
+ return -1;
+ }
+ return str.indexOf(searchChar);
+ }
+
+ /**
+ * <p>Finds the first index within a String from a start position,
+ * handling <code>null</code>.
+ * This method uses [EMAIL PROTECTED] String#indexOf(int, int)}</p>
+ *
+ * <p>A <code>null</code> String will return <code>-1</code>.
+ * A negative start position is treated as zero.
+ * A start position greater than the string length returns <code>-1</code>.</p>
+ *
+ * <pre>
+ * StringUtils.indexOf(null, ' ', 0) = -1
+ * StringUtils.indexOf(null, ' ', -1) = -1
+ * StringUtils.indexOf("", ' ', 0) = -1
+ * StringUtils.indexOf("", ' ', -1) = -1
+ * StringUtils.indexOf("aabaabaa", 'b', 0) = 2
+ * StringUtils.indexOf("aabaabaa", 'b', 3) = 5
+ * StringUtils.indexOf("aabaabaa", 'b', 9) = -1
+ * StringUtils.indexOf("aabaabaa", 'b', -1) = 2
+ * </pre>
+ *
+ * @param str the String to check, may be null
+ * @param searchChar the character to find
+ * @param startPos the start position, negative treated as zero
+ * @return the first index of the search character,
+ * -1 if no match or <code>null</code> string input
+ */
+ public static int indexOf(String str, char searchChar, int startPos) {
+ if (str == null || str.length() == 0) {
+ return -1;
+ }
+ return str.indexOf(searchChar, startPos);
+ }
+
+ /**
+ * <p>Finds the first index within a String, handling <code>null</code>.
+ * This method uses [EMAIL PROTECTED] String#indexOf(String)}</p>
+ *
+ * <p>A <code>null</code> String will return <code>-1</code>.</p>
+ *
+ * <pre>
+ * StringUtils.indexOf(null, null) = -1
+ * StringUtils.indexOf("", null) = -1
+ * StringUtils.indexOf("", "") = 0
+ * StringUtils.indexOf("aabaabaa", "a") = 0
+ * StringUtils.indexOf("aabaabaa", "b") = 2
+ * StringUtils.indexOf("aabaabaa", "ab") = 1
+ * </pre>
+ *
+ * @param str the String to check, may be null
+ * @param searchStr the String to find, may be null
+ * @return the first index of the search String,
+ * -1 if no match or <code>null</code> string input
+ */
+ public static int indexOf(String str, String searchStr) {
+ if (str == null || searchStr == null) {
+ return -1;
+ }
+ return str.indexOf(searchStr);
+ }
+
+ /**
+ * <p>Finds the first index within a String, handling <code>null</code>.
+ * This method uses [EMAIL PROTECTED] String#indexOf(String, int)}</p>
+ *
+ * <p>A <code>null</code> String will return <code>-1</code>.
+ * A negative start position is treated as zero.
+ * An empty ("") search String always matches.
+ * A start position greater than the string length only matches
+ * an empty search String.</p>
+ *
+ * <pre>
+ * StringUtils.indexOf(null, null, 0) = -1
+ * StringUtils.indexOf(null, null, -1) = -1
+ * StringUtils.indexOf("", null, 0) = -1
+ * StringUtils.indexOf("", null, -1) = -1
+ * StringUtils.indexOf("", "", 0) = 0
+ * StringUtils.indexOf("aabaabaa", "a", 0) = 0
+ * StringUtils.indexOf("aabaabaa", "b", 0) = 2
+ * StringUtils.indexOf("aabaabaa", "ab", 0) = 1
+ * StringUtils.indexOf("aabaabaa", "b", 3) = 5
+ * StringUtils.indexOf("aabaabaa", "b", 9) = -1
+ * StringUtils.indexOf("aabaabaa", "b", -1) = 2
+ * </pre>
+ *
+ * @param str the String to check, may be null
+ * @param searchStr the String to find, may be null
+ * @param startPos the start position, negative treated as zero
+ * @return the first index of the search String,
+ * -1 if no match or <code>null</code> string input
+ */
+ public static int indexOf(String str, String searchStr, int startPos) {
+ if (str == null || searchStr == null) {
+ return -1;
+ }
+ return str.indexOf(searchStr, startPos);
+ }
+
+ // LastIndexOf
+ //-----------------------------------------------------------------------
+
+ /**
+ * <p>Finds the last index within a String, handling <code>null</code>.
+ * This method uses [EMAIL PROTECTED] String#indexOf(int)}</p>
+ *
+ * <p>A <code>null</code> String will return <code>-1</code>.</p>
+ *
+ * <pre>
+ * StringUtils.lastIndexOf(null, ' ') = -1
+ * StringUtils.lastIndexOf("", ' ') = -1
+ * StringUtils.lastIndexOf("aabaabaa", 'a') = 7
+ * StringUtils.lastIndexOf("aabaabaa", 'b') = 5
+ * </pre>
+ *
+ * @param str the String to check, may be null
+ * @param searchChar the character to find
+ * @return the last index of the search character,
+ * -1 if no match or <code>null</code> string input
+ */
+ public static int lastIndexOf(String str, char searchChar) {
+ if (str == null || str.length() == 0) {
+ return -1;
+ }
+ return str.lastIndexOf(searchChar);
+ }
+
+ /**
+ * <p>Finds the last index within a String from a start position,
+ * handling <code>null</code>.
+ * This method uses [EMAIL PROTECTED] String#indexOf(int, int)}</p>
+ *
+ * <p>A <code>null</code> String will return <code>-1</code>.
+ * A negative or zero start position returns <code>-1</code>.
+ * A start position greater than the string length searches the whole
string.</p>
+ *
+ * <pre>
+ * StringUtils.lastIndexOf(null, ' ', 0) = -1
+ * StringUtils.lastIndexOf(null, ' ', -1) = -1
+ * StringUtils.lastIndexOf("", ' ', 0) = -1
+ * StringUtils.lastIndexOf("", ' ', -1) = -1
+ * StringUtils.lastIndexOf("aabaabaa", 'b', 8) = 5
+ * StringUtils.lastIndexOf("aabaabaa", 'b', 4) = 2
+ * StringUtils.lastIndexOf("aabaabaa", 'b', 0) = -1
+ * StringUtils.lastIndexOf("aabaabaa", 'b', 9) = 5
+ * StringUtils.lastIndexOf("aabaabaa", 'b', -1) = -1
+ * </pre>
+ *
+ * @param str the String to check, may be null
+ * @param searchChar the character to find
+ * @param startPos the start position
+ * @return the last index of the search character,
+ * -1 if no match or <code>null</code> string input
+ */
+ public static int lastIndexOf(String str, char searchChar, int startPos) {
+ if (str == null || str.length() == 0) {
+ return -1;
+ }
+ return str.lastIndexOf(searchChar, startPos);
+ }
+
+ /**
+ * <p>Finds the last index within a String, handling <code>null</code>.
+ * This method uses [EMAIL PROTECTED] String#indexOf(String)}</p>
+ *
+ * <p>A <code>null</code> String will return <code>-1</code>.</p>
+ *
+ * <pre>
+ * StringUtils.lastIndexOf(null, null) = -1
+ * StringUtils.lastIndexOf("", null) = -1
+ * StringUtils.lastIndexOf("", "") = 0
+ * StringUtils.lastIndexOf("aabaabaa", "a") = 0
+ * StringUtils.lastIndexOf("aabaabaa", "b") = 2
+ * StringUtils.lastIndexOf("aabaabaa", "ab") = 1
+ * </pre>
+ *
+ * @param str the String to check, may be null
+ * @param searchStr the String to find, may be null
+ * @return the last index of the search String,
+ * -1 if no match or <code>null</code> string input
+ */
+ public static int lastIndexOf(String str, String searchStr) {
+ if (str == null || searchStr == null) {
+ return -1;
+ }
+ return str.lastIndexOf(searchStr);
+ }
+
+ /**
+ * <p>Finds the first index within a String, handling <code>null</code>.
+ * This method uses [EMAIL PROTECTED] String#indexOf(String, int)}</p>
+ *
+ * <p>A <code>null</code> String will return <code>-1</code>.
+ * A negative start position returns <code>-1</code>.
+ * A zero start position only matches an empty String ("").
+ * An empty ("") search String always matches unless start position negative.
+ * A start position greater than the string length searches the whole
string.</p>
+ *
+ * <pre>
+ * StringUtils.lastIndexOf(null, null, 0) = -1
+ * StringUtils.lastIndexOf(null, null, -1) = -1
+ * StringUtils.lastIndexOf("", null, 0) = -1
+ * StringUtils.lastIndexOf("", null, -1) = -1
+ * StringUtils.lastIndexOf("aabaabaa", "a", 8) = 7
+ * StringUtils.lastIndexOf("aabaabaa", "b", 8) = 5
+ * StringUtils.lastIndexOf("aabaabaa", "ab", 8) = 4
+ * StringUtils.lastIndexOf("aabaabaa", "b", 9) = 5
+ * StringUtils.lastIndexOf("aabaabaa", "b", -1) = -1
+ * </pre>
+ *
+ * @param str the String to check, may be null
+ * @param searchStr the String to find, may be null
+ * @param startPos the start position, negative treated as zero
+ * @return the first index of the search String,
+ * -1 if no match or <code>null</code> string input
+ */
+ public static int lastIndexOf(String str, String searchStr, int startPos) {
+ if (str == null || searchStr == null) {
+ return -1;
+ }
+ return str.lastIndexOf(searchStr, startPos);
+ }
+
+ // Contains
+ //-----------------------------------------------------------------------
+
+ /**
+ * <p>Checks if String contains a search character, handling <code>null</code>.
+ * This method uses [EMAIL PROTECTED] String#indexOf(int)}</p>
+ *
+ * <p>A <code>null</code> String will return <code>-1</code>.</p>
+ *
+ * <pre>
+ * StringUtils.contains(null, ' ') = false
+ * StringUtils.contains("", ' ') = false
+ * StringUtils.contains("abc", 'a') = true
+ * StringUtils.contains("abc", 'z') = false
+ * </pre>
+ *
+ * @param str the String to check, may be null
+ * @param searchChar the character to find
+ * @return true if the String contains the search character,
+ * false if not or <code>null</code> string input
+ */
+ public static boolean contains(String str, char searchChar) {
+ if (str == null || str.length() == 0) {
+ return false;
+ }
+ return (str.indexOf(searchChar) >= 0);
+ }
+
+ /**
+ * <p>Find the first index within a String, handling <code>null</code>.
+ * This method uses [EMAIL PROTECTED] String#indexOf(String)}</p>
+ *
+ * <p>A <code>null</code> String will return <code>-1</code>.</p>
+ *
+ * <pre>
+ * StringUtils.contains(null, null) = false
+ * StringUtils.contains("", null) = false
+ * StringUtils.contains("", "") = true
+ * StringUtils.contains("abc", "") = true
+ * StringUtils.contains("abc", "a") = true
+ * StringUtils.contains("abc", "z") = false
+ * </pre>
+ *
+ * @param str the String to check, may be null
+ * @param searchStr the String to find, may be null
+ * @return true if the String contains the search character,
+ * false if not or <code>null</code> string input
+ */
+ public static boolean contains(String str, String searchStr) {
+ if (str == null || searchStr == null) {
+ return false;
+ }
+ return (str.indexOf(searchStr) >= 0);
+ }
+
+ // IndexOfAny
+ //-----------------------------------------------------------------------
+
+ /**
* <p>Find the first index of any of a set of potential substrings.</p>
*
* <p>A <code>null</code> String will return <code>-1</code>.
@@ -554,6 +858,9 @@
return ret;
}
+ // IndexOfAnyBut
+ //-----------------------------------------------------------------------
+
/**
* <p>Search a String to find the first index of any
* character not in the given set of characters.</p>
@@ -591,7 +898,7 @@
return -1;
}
- // Contains
+ // ContainsOnly
//-----------------------------------------------------------------------
/**
@@ -650,6 +957,9 @@
}
return containsOnly(str, validChars.toCharArray());
}
+
+ // ContainsNone
+ //-----------------------------------------------------------------------
/**
* <p>Checks that the String does not contain certain characters.</p>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]