Patch from Fredrik Westermarck <fredrik.westermarck@mdh.se> that adds the

containsOnly method. I added a couple more unit tests and modified the code
slightly.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/lang/trunk@137047 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Henri Yandell 2002-09-19 06:58:13 +00:00
parent aeee2518e4
commit d788e182bc
2 changed files with 59 additions and 4 deletions

View File

@ -81,7 +81,8 @@ import java.util.Iterator;
* @author <a href="mailto:ed@apache.org">Ed Korthof</a> * @author <a href="mailto:ed@apache.org">Ed Korthof</a>
* @author <a href="mailto:rand_mcneely@yahoo.com>Rand McNeely</a> * @author <a href="mailto:rand_mcneely@yahoo.com>Rand McNeely</a>
* @author <a href="mailto:scolebourne@joda.org>Stephen Colebourne</a> * @author <a href="mailto:scolebourne@joda.org>Stephen Colebourne</a>
* @version $Id: StringUtils.java,v 1.10 2002/08/31 19:05:32 bayard Exp $ * @author <a href="mailto:fredrik@westermarck.com>Fredrik Westermarck</a>
* @version $Id: StringUtils.java,v 1.11 2002/09/19 06:58:13 bayard Exp $
*/ */
public class StringUtils { public class StringUtils {
@ -1547,6 +1548,34 @@ public class StringUtils {
return d[n][m]; return d[n][m];
} }
/**
* Checks if the String contains only certain chars.
*
* @param str the String to check
* @param valid an array of valid chars
* @return true if it only contains valid chars and is non-null
*/
public static boolean containsOnly(String str, char[] valid) {
if(str == null || valid == null) {
return false;
}
int strSize = str.length();
int validSize = valid.length;
for(int i=0; i<strSize; i++) {
boolean contains = false;
for(int j=0; j<validSize; j++) {
if(valid[j] == str.charAt(i)) {
contains = true;
break;
}
}
if(!contains) {
return false;
}
}
return true;
}
} }

View File

@ -67,7 +67,8 @@ import junit.textui.TestRunner;
* @author <a href="mailto:bayard@generationjava.com">Henri Yandell</a> * @author <a href="mailto:bayard@generationjava.com">Henri Yandell</a>
* @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>
* @version $Id: StringUtilsTest.java,v 1.3 2002/07/26 01:40:11 dlr Exp $ * @author <a href="mailto:fredrik@westermarck.com>Fredrik Westermarck</a>
* @version $Id: StringUtilsTest.java,v 1.4 2002/09/19 06:58:13 bayard Exp $
*/ */
public class StringUtilsTest extends TestCase public class StringUtilsTest extends TestCase
{ {
@ -327,5 +328,30 @@ public class StringUtilsTest extends TestCase
1, StringUtils.getLevenshteinDistance("hello", "hallo") ); 1, StringUtils.getLevenshteinDistance("hello", "hallo") );
} }
public void testContainsOnly() {
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("containsOnly(null, null) failed", false, StringUtils.containsOnly(null, null));
assertEquals("containsOnly(empty-string, null) failed", false, StringUtils.containsOnly("", null));
assertEquals("containsOnly(null, empty-string) failed", false, StringUtils.containsOnly(null, emptyChars));
assertEquals("containsOnly(str1, empty-char-array) failed", false, StringUtils.containsOnly(str1, emptyChars));
assertEquals("containsOnly(empty-string, chars1) failed", true, StringUtils.containsOnly("", chars1));
assertEquals("containsOnly(str1, chars1) failed", false, StringUtils.containsOnly(str1, chars1));
assertEquals("containsOnly(str1, chars1) failed", false, StringUtils.containsOnly(str1, chars1));
assertEquals("containsOnly(str1, chars1) success", true, StringUtils.containsOnly(str1, chars2));
assertEquals("containsOnly(str1, chars1) success", true, StringUtils.containsOnly(str1, chars3));
assertEquals("containsOnly(str2, chars2) success", true, StringUtils.containsOnly(str2, chars1));
assertEquals("containsOnly(str2, chars2) failed", false, StringUtils.containsOnly(str2, chars2));
assertEquals("containsOnly(str2, chars2) success", true, StringUtils.containsOnly(str2, chars3));
assertEquals("containsOnly(String3, chars3) failed", false, StringUtils.containsOnly(str3, chars1));
assertEquals("containsOnly(String3, chars3) failed", false, StringUtils.containsOnly(str3, chars2));
assertEquals("containsOnly(String3, chars3) success", true, StringUtils.containsOnly(str3, chars3));
}
} }