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]