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, ""));