Author: bayard
Date: Sat Apr 20 09:05:43 2013
New Revision: 1470130

URL: http://svn.apache.org/r1470130
Log:
Add a CharSetUtils.containsAny(String, String) per LANG-886

Modified:
    commons/proper/lang/trunk/src/changes/changes.xml
    
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/CharSetUtils.java
    
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/CharSetUtilsTest.java

Modified: commons/proper/lang/trunk/src/changes/changes.xml
URL: 
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/changes/changes.xml?rev=1470130&r1=1470129&r2=1470130&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/changes/changes.xml (original)
+++ commons/proper/lang/trunk/src/changes/changes.xml Sat Apr 20 09:05:43 2013
@@ -22,6 +22,7 @@
   <body>
 
   <release version="3.2" date="TBA" description="Next release">
+    <action issue="LANG-886" type="add">Added CharSetUtils.containsAny(String, 
String)</action>
     <action issue="LANG-846" type="update">Provide 
CharSequenceUtils.regionMatches with a proper green implementation instead of 
inefficiently converting to Strings</action>
     <action issue="LANG-797" type="add">Added escape/unescapeJson to 
StringEscapeUtils</action>
     <action issue="LANG-875" type="add">Added appendIfMissing and 
prependIfMissing methods to StringUtils</action>

Modified: 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/CharSetUtils.java
URL: 
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/CharSetUtils.java?rev=1470130&r1=1470129&r2=1470130&view=diff
==============================================================================
--- 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/CharSetUtils.java
 (original)
+++ 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/CharSetUtils.java
 Sat Apr 20 09:05:43 2013
@@ -83,6 +83,39 @@ public class CharSetUtils {
         return buffer.toString();
     }
 
+    // ContainsAny
+    //-----------------------------------------------------------------------
+    /**
+     * <p>Takes an argument in set-syntax, see evaluateSet,
+     * and identifies whether any of the characters are present in the 
specified string.</p>
+     *
+     * <pre>
+     * CharSetUtils.containsAny(null, *)        = false
+     * CharSetUtils.containsAny("", *)          = false
+     * CharSetUtils.containsAny(*, null)        = false
+     * CharSetUtils.containsAny(*, "")          = false
+     * CharSetUtils.containsAny("hello", "k-p") = true
+     * CharSetUtils.containsAny("hello", "a-d") = false
+     * </pre>
+     *
+     * @see CharSet#getInstance(java.lang.String...) for set-syntax.
+     * @param str  String to look for characters in, may be null
+     * @param set  String[] set of characters to identify, may be null
+     * @return whether or not the characters in the set are in the primary 
string
+     */
+    public static boolean containsAny(final String str, final String... set) {
+        if (StringUtils.isEmpty(str) || deepEmpty(set)) {
+            return false;
+        }
+        final CharSet chars = CharSet.getInstance(set);
+        for (final char c : str.toCharArray()) {
+            if (chars.contains(c)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     // Count
     //-----------------------------------------------------------------------
     /**

Modified: 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/CharSetUtilsTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/CharSetUtilsTest.java?rev=1470130&r1=1470129&r2=1470130&view=diff
==============================================================================
--- 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/CharSetUtilsTest.java
 (original)
+++ 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/CharSetUtilsTest.java
 Sat Apr 20 09:05:43 2013
@@ -87,6 +87,46 @@ public class CharSetUtilsTest  {
 
     //-----------------------------------------------------------------------
     @Test
+    public void testContainsAny_StringString() {
+        assertFalse(CharSetUtils.containsAny(null, (String) null));
+        assertFalse(CharSetUtils.containsAny(null, ""));
+        
+        assertFalse(CharSetUtils.containsAny("", (String) null));
+        assertFalse(CharSetUtils.containsAny("", ""));
+        assertFalse(CharSetUtils.containsAny("", "a-e"));
+        
+        assertFalse(CharSetUtils.containsAny("hello", (String) null));
+        assertFalse(CharSetUtils.containsAny("hello", ""));
+        assertTrue(CharSetUtils.containsAny("hello", "a-e"));
+        assertTrue(CharSetUtils.containsAny("hello", "l-p"));
+    }
+    
+    @Test
+    public void testContainsAny_StringStringarray() {
+        assertFalse(CharSetUtils.containsAny(null, (String[]) null));
+        assertFalse(CharSetUtils.containsAny(null, new String[0]));
+        assertFalse(CharSetUtils.containsAny(null, new String[] {null}));
+        assertFalse(CharSetUtils.containsAny(null, new String[] {"a-e"}));
+        
+        assertFalse(CharSetUtils.containsAny("", (String[]) null));
+        assertFalse(CharSetUtils.containsAny("", new String[0]));
+        assertFalse(CharSetUtils.containsAny("", new String[] {null}));
+        assertFalse(CharSetUtils.containsAny("", new String[] {"a-e"}));
+        
+        assertFalse(CharSetUtils.containsAny("hello", (String[]) null));
+        assertFalse(CharSetUtils.containsAny("hello", new String[0]));
+        assertFalse(CharSetUtils.containsAny("hello", new String[] {null}));
+        assertTrue(CharSetUtils.containsAny("hello", new String[] {"a-e"}));
+        
+        assertTrue(CharSetUtils.containsAny("hello", new String[] { "el" }));
+        assertFalse(CharSetUtils.containsAny("hello", new String[] { "x" }));
+        assertTrue(CharSetUtils.containsAny("hello", new String[] { "e-i" }));
+        assertTrue(CharSetUtils.containsAny("hello", new String[] { "a-z" }));
+        assertFalse(CharSetUtils.containsAny("hello", new String[] { "" }));
+    }
+
+    //-----------------------------------------------------------------------
+    @Test
     public void testCount_StringString() {
         assertEquals(0, CharSetUtils.count(null, (String) null));
         assertEquals(0, CharSetUtils.count(null, ""));


Reply via email to