scolebourne 2003/08/01 16:54:41 Modified: lang/src/test/org/apache/commons/lang StringUtilsEqualsIndexOfTest.java lang/src/java/org/apache/commons/lang StringUtils.java Log: Complete the indexOfAny() method set Revision Changes Path 1.7 +64 -37 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.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- StringUtilsEqualsIndexOfTest.java 30 Jul 2003 22:21:39 -0000 1.6 +++ StringUtilsEqualsIndexOfTest.java 1 Aug 2003 23:54:41 -0000 1.7 @@ -251,10 +251,10 @@ } //----------------------------------------------------------------------- - public void testIndexOfAny() { - assertEquals(-1, StringUtils.indexOfAny(null, null)); + public void testIndexOfAny_StringStringarray() { + assertEquals(-1, StringUtils.indexOfAny(null, (String[]) null)); assertEquals(-1, StringUtils.indexOfAny(null, FOOBAR_SUB_ARRAY)); - assertEquals(-1, StringUtils.indexOfAny(FOOBAR, null)); + assertEquals(-1, StringUtils.indexOfAny(FOOBAR, (String[]) null)); assertEquals(2, StringUtils.indexOfAny(FOOBAR, FOOBAR_SUB_ARRAY)); assertEquals(-1, StringUtils.indexOfAny(FOOBAR, new String[0])); assertEquals(-1, StringUtils.indexOfAny(null, new String[0])); @@ -268,7 +268,7 @@ assertEquals(-1, StringUtils.indexOfAny(null, new String[] {null})); } - public void testLastIndexOfAny() { + public void testLastIndexOfAny_StringStringarray() { assertEquals(-1, StringUtils.lastIndexOfAny(null, null)); assertEquals(-1, StringUtils.lastIndexOfAny(null, FOOBAR_SUB_ARRAY)); assertEquals(-1, StringUtils.lastIndexOfAny(FOOBAR, null)); @@ -286,44 +286,71 @@ } //----------------------------------------------------------------------- - 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)); - assertEquals(3, StringUtils.indexOfAnyBut("zzabyycdxx", "za")); - assertEquals(0, StringUtils.indexOfAnyBut("zzabyycdxx", "")); - assertEquals(-1, StringUtils.indexOfAnyBut("aba","ab")); + public void testIndexOfAny_StringChararray() { + assertEquals(-1, StringUtils.indexOfAny(null, (char[]) null)); + assertEquals(-1, StringUtils.indexOfAny(null, new char[0])); + assertEquals(-1, StringUtils.indexOfAny(null, new char[] {'a','b'})); + + assertEquals(-1, StringUtils.indexOfAny("", (char[]) null)); + assertEquals(-1, StringUtils.indexOfAny("", new char[0])); + assertEquals(-1, StringUtils.indexOfAny("", new char[] {'a','b'})); + + assertEquals(-1, StringUtils.indexOfAny("zzabyycdxx", (char[]) null)); + assertEquals(-1, StringUtils.indexOfAny("zzabyycdxx", new char[0])); + assertEquals(0, StringUtils.indexOfAny("zzabyycdxx", new char[] {'z','a'})); + assertEquals(3, StringUtils.indexOfAny("zzabyycdxx", new char[] {'b','y'})); + assertEquals(-1, StringUtils.indexOfAny("ab", new char[] {'z'})); + } + + public void testIndexOfAny_StringString() { + assertEquals(-1, StringUtils.indexOfAny(null, (String) null)); + assertEquals(-1, StringUtils.indexOfAny(null, "")); + assertEquals(-1, StringUtils.indexOfAny(null, "ab")); + + assertEquals(-1, StringUtils.indexOfAny("", (String) null)); + assertEquals(-1, StringUtils.indexOfAny("", "")); + assertEquals(-1, StringUtils.indexOfAny("", "ab")); + + assertEquals(-1, StringUtils.indexOfAny("zzabyycdxx", (String) null)); + assertEquals(-1, StringUtils.indexOfAny("zzabyycdxx", "")); + assertEquals(0, StringUtils.indexOfAny("zzabyycdxx", "za")); + assertEquals(3, StringUtils.indexOfAny("zzabyycdxx", "by")); + assertEquals(-1, StringUtils.indexOfAny("ab", "z")); } - + //----------------------------------------------------------------------- - public void testIndexOfAnyButChar() { + public void testIndexOfAnyBut_StringChararray() { assertEquals(-1, StringUtils.indexOfAnyBut(null, (char[]) null)); - assertEquals(-1, StringUtils.indexOfAnyBut("", (char[]) null)); assertEquals(-1, StringUtils.indexOfAnyBut(null, new char[0])); + assertEquals(-1, StringUtils.indexOfAnyBut(null, new char[] {'a','b'})); + + assertEquals(-1, StringUtils.indexOfAnyBut("", (char[]) null)); assertEquals(-1, StringUtils.indexOfAnyBut("", new char[0])); + assertEquals(-1, StringUtils.indexOfAnyBut("", new char[] {'a','b'})); + + assertEquals(-1, StringUtils.indexOfAnyBut("zzabyycdxx", (char[]) null)); + assertEquals(-1, StringUtils.indexOfAnyBut("zzabyycdxx", new char[0])); assertEquals(3, StringUtils.indexOfAnyBut("zzabyycdxx", new char[] {'z','a'})); - assertEquals(0, StringUtils.indexOfAnyBut("zzabyycdxx", new char[0])); - assertEquals(-1, StringUtils.indexOfAnyBut("ab", new char[] {'a','b'})); + assertEquals(0, StringUtils.indexOfAnyBut("zzabyycdxx", new char[] {'b','y'})); + assertEquals(0, StringUtils.indexOfAnyBut("ab", new char[] {'z'})); } + public void testIndexOfAnyBut_StringString() { + assertEquals(-1, StringUtils.indexOfAnyBut(null, (String) null)); + assertEquals(-1, StringUtils.indexOfAnyBut(null, "")); + assertEquals(-1, StringUtils.indexOfAnyBut(null, "ab")); + + assertEquals(-1, StringUtils.indexOfAnyBut("", (String) null)); + assertEquals(-1, StringUtils.indexOfAnyBut("", "")); + assertEquals(-1, StringUtils.indexOfAnyBut("", "ab")); + + assertEquals(-1, StringUtils.indexOfAnyBut("zzabyycdxx", (String) null)); + assertEquals(-1, StringUtils.indexOfAnyBut("zzabyycdxx", "")); + assertEquals(3, StringUtils.indexOfAnyBut("zzabyycdxx", "za")); + assertEquals(0, StringUtils.indexOfAnyBut("zzabyycdxx", "by")); + assertEquals(0, StringUtils.indexOfAnyBut("ab", "z")); + } + //----------------------------------------------------------------------- public void testContainsOnly_String() { String str1 = "a"; @@ -349,7 +376,7 @@ assertEquals(true, StringUtils.containsOnly(str3, chars3)); } - public void testContainsOnly_CharArray() { + public void testContainsOnly_Chararray() { String str1 = "a"; String str2 = "b"; String str3 = "ab"; @@ -398,7 +425,7 @@ assertEquals(true, StringUtils.containsNone(str3, chars3)); } - public void testContainsNone_CharArray() { + public void testContainsNone_Chararray() { String str1 = "a"; String str2 = "b"; String str3 = "ab."; 1.90 +89 -12 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.89 retrieving revision 1.90 diff -u -r1.89 -r1.90 --- StringUtils.java 1 Aug 2003 23:20:06 -0000 1.89 +++ StringUtils.java 1 Aug 2003 23:54:41 -0000 1.90 @@ -1011,7 +1011,7 @@ return (str.indexOf(searchStr) >= 0); } - // IndexOfAny + // IndexOfAny strings //----------------------------------------------------------------------- /** * <p>Find the first index of any of a set of potential substrings.</p> @@ -1112,7 +1112,73 @@ return ret; } - // IndexOfAnyBut + // IndexOfAny chars + //----------------------------------------------------------------------- + /** + * <p>Search a String to find the first index of any + * character in the given set of characters.</p> + * + * <p>A <code>null</code> String will return <code>-1</code>. + * A <code>null</code> or zero length search array will return <code>-1</code>.</p> + * + * <pre> + * StringUtils.indexOfAny(null, *) = -1 + * StringUtils.indexOfAny("", *) = -1 + * StringUtils.indexOfAny(*, null) = -1 + * StringUtils.indexOfAny(*, []) = -1 + * StringUtils.indexOfAny("zzabyycdxx",['z','a']) = 0 + * StringUtils.indexOfAny("zzabyycdxx",['b','y']) = 3 + * StringUtils.indexOfAny("aba", ['z']) = -1 + * </pre> + * + * @param str the String to check, may be null + * @param searchChars the chars to search for, may be null + * @return the index of any of the chars, -1 if no match or null input + */ + public static int indexOfAny(String str, char[] searchChars) { + if (str == null || str.length() == 0 || searchChars == null || searchChars.length == 0) { + return -1; + } + for (int i = 0; i < str.length(); i ++) { + char ch = str.charAt(i); + for (int j = 0; j < searchChars.length; j++) { + if (searchChars[j] == ch) { + return i; + } + } + } + return -1; + } + + /** + * <p>Search a String to find the first index of any + * character in the given set of characters.</p> + * + * <p>A <code>null</code> String will return <code>-1</code>. + * A <code>null</code> search string will return <code>-1</code>.</p> + * + * <pre> + * StringUtils.indexOfAny(null, *) = -1 + * StringUtils.indexOfAny("", *) = -1 + * StringUtils.indexOfAny(*, null) = -1 + * StringUtils.indexOfAny(*, "") = -1 + * StringUtils.indexOfAny("zzabyycdxx", "za") = 0 + * StringUtils.indexOfAny("zzabyycdxx", "by") = 3 + * StringUtils.indexOfAny("aba","z") = -1 + * </pre> + * + * @param str the String to check, may be null + * @param searchChars the chars to search for, may be null + * @return the index of any of the chars, -1 if no match or null input + */ + public static int indexOfAny(String str, String searchChars) { + if (str == null || str.length() == 0 || searchChars == null || searchChars.length() == 0) { + return -1; + } + return indexOfAny(str, searchChars.toCharArray()); + } + + // IndexOfAnyBut chars //----------------------------------------------------------------------- /** * <p>Search a String to find the first index of any @@ -1123,7 +1189,9 @@ * * <pre> * StringUtils.indexOfAnyBut(null, *) = -1 + * StringUtils.indexOfAnyBut("", *) = -1 * StringUtils.indexOfAnyBut(*, null) = -1 + * StringUtils.indexOfAnyBut(*, []) = -1 * StringUtils.indexOfAnyBut("zzabyycdxx",'za') = 3 * StringUtils.indexOfAnyBut("zzabyycdxx", '') = 0 * StringUtils.indexOfAnyBut("aba", 'ab') = -1 @@ -1134,10 +1202,19 @@ * @return the index of any of the chars, -1 if no match or null input */ public static int indexOfAnyBut(String str, char[] searchChars) { - if (searchChars == null) { + if (str == null || str.length() == 0 || searchChars == null || searchChars.length == 0) { return -1; } - return indexOfAnyBut(str, new String(searchChars)); + outer: for (int i = 0; i < str.length(); i ++) { + char ch = str.charAt(i); + for (int j = 0; j < searchChars.length; j++) { + if (searchChars[j] == ch) { + continue outer; + } + } + return i; + } + return -1; } /** @@ -1149,7 +1226,9 @@ * * <pre> * StringUtils.indexOfAnyBut(null, *) = -1 + * StringUtils.indexOfAnyBut("", *) = -1 * StringUtils.indexOfAnyBut(*, null) = -1 + * StringUtils.indexOfAnyBut(*, "") = -1 * StringUtils.indexOfAnyBut("zzabyycdxx", "za") = 3 * StringUtils.indexOfAnyBut("zzabyycdxx", "") = 0 * StringUtils.indexOfAnyBut("aba","ab") = -1 @@ -1160,16 +1239,14 @@ * @return the index of any of the chars, -1 if no match or null input */ public static int indexOfAnyBut(String str, String searchChars) { - if (str == null || searchChars == null) { + if (str == null || str.length() == 0 || searchChars == null || searchChars.length() == 0) { return -1; } - - for (int i = 0; i < str.length(); i ++) { - if (searchChars.indexOf(str.charAt(i)) < 0) { - return i; - } + for (int i = 0; i < str.length(); i++) { + if (searchChars.indexOf(str.charAt(i)) < 0) { + return i; + } } - return -1; }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]