mirror of
https://github.com/apache/commons-lang.git
synced 2025-02-08 11:05:09 +00:00
Complete the indexOfAny() method set
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/lang/trunk@137554 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
0dce2b5285
commit
8ce98776ee
@ -144,7 +144,7 @@
|
|||||||
* @author <a href="mailto:ggregory@seagullsw.com">Gary Gregory</a>
|
* @author <a href="mailto:ggregory@seagullsw.com">Gary Gregory</a>
|
||||||
* @author Phil Steitz
|
* @author Phil Steitz
|
||||||
* @since 1.0
|
* @since 1.0
|
||||||
* @version $Id: StringUtils.java,v 1.89 2003/08/01 23:20:06 scolebourne Exp $
|
* @version $Id: StringUtils.java,v 1.90 2003/08/01 23:54:41 scolebourne Exp $
|
||||||
*/
|
*/
|
||||||
public class StringUtils {
|
public class StringUtils {
|
||||||
// Performance testing notes (JDK 1.4, Jul03, scolebourne)
|
// Performance testing notes (JDK 1.4, Jul03, scolebourne)
|
||||||
@ -1011,7 +1011,7 @@ public static boolean contains(String str, String searchStr) {
|
|||||||
return (str.indexOf(searchStr) >= 0);
|
return (str.indexOf(searchStr) >= 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// IndexOfAny
|
// IndexOfAny strings
|
||||||
//-----------------------------------------------------------------------
|
//-----------------------------------------------------------------------
|
||||||
/**
|
/**
|
||||||
* <p>Find the first index of any of a set of potential substrings.</p>
|
* <p>Find the first index of any of a set of potential substrings.</p>
|
||||||
@ -1112,7 +1112,73 @@ public static int lastIndexOfAny(String str, String[] searchStrs) {
|
|||||||
return ret;
|
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
|
* <p>Search a String to find the first index of any
|
||||||
@ -1123,7 +1189,9 @@ public static int lastIndexOfAny(String str, String[] searchStrs) {
|
|||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
* StringUtils.indexOfAnyBut(null, *) = -1
|
* StringUtils.indexOfAnyBut(null, *) = -1
|
||||||
|
* StringUtils.indexOfAnyBut("", *) = -1
|
||||||
* StringUtils.indexOfAnyBut(*, null) = -1
|
* StringUtils.indexOfAnyBut(*, null) = -1
|
||||||
|
* StringUtils.indexOfAnyBut(*, []) = -1
|
||||||
* StringUtils.indexOfAnyBut("zzabyycdxx",'za') = 3
|
* StringUtils.indexOfAnyBut("zzabyycdxx",'za') = 3
|
||||||
* StringUtils.indexOfAnyBut("zzabyycdxx", '') = 0
|
* StringUtils.indexOfAnyBut("zzabyycdxx", '') = 0
|
||||||
* StringUtils.indexOfAnyBut("aba", 'ab') = -1
|
* StringUtils.indexOfAnyBut("aba", 'ab') = -1
|
||||||
@ -1134,10 +1202,19 @@ public static int lastIndexOfAny(String str, String[] searchStrs) {
|
|||||||
* @return the index of any of the chars, -1 if no match or null input
|
* @return the index of any of the chars, -1 if no match or null input
|
||||||
*/
|
*/
|
||||||
public static int indexOfAnyBut(String str, char[] searchChars) {
|
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 -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 @@ public static int indexOfAnyBut(String str, char[] searchChars) {
|
|||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
* StringUtils.indexOfAnyBut(null, *) = -1
|
* StringUtils.indexOfAnyBut(null, *) = -1
|
||||||
|
* StringUtils.indexOfAnyBut("", *) = -1
|
||||||
* StringUtils.indexOfAnyBut(*, null) = -1
|
* StringUtils.indexOfAnyBut(*, null) = -1
|
||||||
|
* StringUtils.indexOfAnyBut(*, "") = -1
|
||||||
* StringUtils.indexOfAnyBut("zzabyycdxx", "za") = 3
|
* StringUtils.indexOfAnyBut("zzabyycdxx", "za") = 3
|
||||||
* StringUtils.indexOfAnyBut("zzabyycdxx", "") = 0
|
* StringUtils.indexOfAnyBut("zzabyycdxx", "") = 0
|
||||||
* StringUtils.indexOfAnyBut("aba","ab") = -1
|
* StringUtils.indexOfAnyBut("aba","ab") = -1
|
||||||
@ -1160,16 +1239,14 @@ public static int indexOfAnyBut(String str, char[] searchChars) {
|
|||||||
* @return the index of any of the chars, -1 if no match or null input
|
* @return the index of any of the chars, -1 if no match or null input
|
||||||
*/
|
*/
|
||||||
public static int indexOfAnyBut(String str, String searchChars) {
|
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;
|
return -1;
|
||||||
}
|
}
|
||||||
|
for (int i = 0; i < str.length(); i++) {
|
||||||
for (int i = 0; i < str.length(); i ++) {
|
if (searchChars.indexOf(str.charAt(i)) < 0) {
|
||||||
if (searchChars.indexOf(str.charAt(i)) < 0) {
|
return i;
|
||||||
return i;
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@
|
|||||||
* @author <a href="mailto:scolebourne@joda.org">Stephen Colebourne</a>
|
* @author <a href="mailto:scolebourne@joda.org">Stephen Colebourne</a>
|
||||||
* @author <a href="mailto:ridesmet@users.sourceforge.net">Ringo De Smet</a>
|
* @author <a href="mailto:ridesmet@users.sourceforge.net">Ringo De Smet</a>
|
||||||
* @author Phil Steitz
|
* @author Phil Steitz
|
||||||
* @version $Id: StringUtilsEqualsIndexOfTest.java,v 1.6 2003/07/30 22:21:39 scolebourne Exp $
|
* @version $Id: StringUtilsEqualsIndexOfTest.java,v 1.7 2003/08/01 23:54:41 scolebourne Exp $
|
||||||
*/
|
*/
|
||||||
public class StringUtilsEqualsIndexOfTest extends TestCase {
|
public class StringUtilsEqualsIndexOfTest extends TestCase {
|
||||||
private static final String FOO = "foo";
|
private static final String FOO = "foo";
|
||||||
@ -251,10 +251,10 @@ public void testContainsString() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------
|
//-----------------------------------------------------------------------
|
||||||
public void testIndexOfAny() {
|
public void testIndexOfAny_StringStringarray() {
|
||||||
assertEquals(-1, StringUtils.indexOfAny(null, null));
|
assertEquals(-1, StringUtils.indexOfAny(null, (String[]) null));
|
||||||
assertEquals(-1, StringUtils.indexOfAny(null, FOOBAR_SUB_ARRAY));
|
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(2, StringUtils.indexOfAny(FOOBAR, FOOBAR_SUB_ARRAY));
|
||||||
assertEquals(-1, StringUtils.indexOfAny(FOOBAR, new String[0]));
|
assertEquals(-1, StringUtils.indexOfAny(FOOBAR, new String[0]));
|
||||||
assertEquals(-1, StringUtils.indexOfAny(null, new String[0]));
|
assertEquals(-1, StringUtils.indexOfAny(null, new String[0]));
|
||||||
@ -268,7 +268,7 @@ public void testIndexOfAny() {
|
|||||||
assertEquals(-1, StringUtils.indexOfAny(null, new String[] {null}));
|
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, null));
|
||||||
assertEquals(-1, StringUtils.lastIndexOfAny(null, FOOBAR_SUB_ARRAY));
|
assertEquals(-1, StringUtils.lastIndexOfAny(null, FOOBAR_SUB_ARRAY));
|
||||||
assertEquals(-1, StringUtils.lastIndexOfAny(FOOBAR, null));
|
assertEquals(-1, StringUtils.lastIndexOfAny(FOOBAR, null));
|
||||||
@ -286,44 +286,71 @@ public void testLastIndexOfAny() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------
|
//-----------------------------------------------------------------------
|
||||||
public void testIndexOfAnyBut() {
|
public void testIndexOfAny_StringChararray() {
|
||||||
String str1 = "a";
|
assertEquals(-1, StringUtils.indexOfAny(null, (char[]) null));
|
||||||
String str2 = "b";
|
assertEquals(-1, StringUtils.indexOfAny(null, new char[0]));
|
||||||
String str3 = "ab";
|
assertEquals(-1, StringUtils.indexOfAny(null, new char[] {'a','b'}));
|
||||||
String chars1= "b";
|
|
||||||
String chars2= "a";
|
assertEquals(-1, StringUtils.indexOfAny("", (char[]) null));
|
||||||
String chars3= "ab";
|
assertEquals(-1, StringUtils.indexOfAny("", new char[0]));
|
||||||
assertEquals(-1, StringUtils.indexOfAnyBut(null, (String) null));
|
assertEquals(-1, StringUtils.indexOfAny("", new char[] {'a','b'}));
|
||||||
assertEquals(-1, StringUtils.indexOfAnyBut("", (String) null));
|
|
||||||
assertEquals(-1, StringUtils.indexOfAnyBut(null, ""));
|
assertEquals(-1, StringUtils.indexOfAny("zzabyycdxx", (char[]) null));
|
||||||
assertEquals(0, StringUtils.indexOfAnyBut(str1, ""));
|
assertEquals(-1, StringUtils.indexOfAny("zzabyycdxx", new char[0]));
|
||||||
assertEquals(-1, StringUtils.indexOfAnyBut("", ""));
|
assertEquals(0, StringUtils.indexOfAny("zzabyycdxx", new char[] {'z','a'}));
|
||||||
assertEquals(-1, StringUtils.indexOfAnyBut("", chars1));
|
assertEquals(3, StringUtils.indexOfAny("zzabyycdxx", new char[] {'b','y'}));
|
||||||
assertEquals(0, StringUtils.indexOfAnyBut(str1, chars1));
|
assertEquals(-1, StringUtils.indexOfAny("ab", new char[] {'z'}));
|
||||||
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 testIndexOfAnyButChar() {
|
|
||||||
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("", 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'}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 testIndexOfAnyBut_StringChararray() {
|
||||||
|
assertEquals(-1, StringUtils.indexOfAnyBut(null, (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[] {'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() {
|
public void testContainsOnly_String() {
|
||||||
String str1 = "a";
|
String str1 = "a";
|
||||||
@ -349,7 +376,7 @@ public void testContainsOnly_String() {
|
|||||||
assertEquals(true, StringUtils.containsOnly(str3, chars3));
|
assertEquals(true, StringUtils.containsOnly(str3, chars3));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testContainsOnly_CharArray() {
|
public void testContainsOnly_Chararray() {
|
||||||
String str1 = "a";
|
String str1 = "a";
|
||||||
String str2 = "b";
|
String str2 = "b";
|
||||||
String str3 = "ab";
|
String str3 = "ab";
|
||||||
@ -398,7 +425,7 @@ public void testContainsNone_String() {
|
|||||||
assertEquals(true, StringUtils.containsNone(str3, chars3));
|
assertEquals(true, StringUtils.containsNone(str3, chars3));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testContainsNone_CharArray() {
|
public void testContainsNone_Chararray() {
|
||||||
String str1 = "a";
|
String str1 = "a";
|
||||||
String str2 = "b";
|
String str2 = "b";
|
||||||
String str3 = "ab.";
|
String str3 = "ab.";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user