scolebourne    2003/07/20 16:57:26

  Modified:    lang/src/test/org/apache/commons/lang
                        StringUtilsEqualsIndexOfTest.java
                        StringUtilsTest.java StringUtilsSubstringTest.java
               lang/src/java/org/apache/commons/lang StringUtils.java
  Log:
  Update Javadoc and tests
  bug 21750, from Phil Steitz
  
  Revision  Changes    Path
  1.4       +41 -3     
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.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- StringUtilsEqualsIndexOfTest.java 19 Jul 2003 23:29:06 -0000      1.3
  +++ StringUtilsEqualsIndexOfTest.java 20 Jul 2003 23:57:26 -0000      1.4
  @@ -63,6 +63,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Stephen Colebourne</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Ringo De Smet</a>
  + * @author Phil Steitz
    * @version $Id$
    */
   public class StringUtilsEqualsIndexOfTest extends TestCase {
  @@ -142,6 +143,7 @@
           assertEquals(0, StringUtils.indexOf("aabaabaa", "a"));
           assertEquals(2, StringUtils.indexOf("aabaabaa", "b"));
           assertEquals(1, StringUtils.indexOf("aabaabaa", "ab"));
  +        assertEquals(0, StringUtils.indexOf("aabaabaa", ""));
       }
   
       public void testIndexOf_StringInt() {
  @@ -163,6 +165,7 @@
           assertEquals(5, StringUtils.indexOf("aabaabaa", "b", 3));
           assertEquals(-1, StringUtils.indexOf("aabaabaa", "b", 9));
           assertEquals(2, StringUtils.indexOf("aabaabaa", "b", -1));
  +        assertEquals(2,StringUtils.indexOf("aabaabaa", "", 2)); 
       }
   
       //-----------------------------------------------------------------------
  @@ -183,12 +186,15 @@
           assertEquals(2, StringUtils.lastIndexOf("aabaabaa", 'b', 3));
           assertEquals(5, StringUtils.lastIndexOf("aabaabaa", 'b', 9));
           assertEquals(-1, StringUtils.lastIndexOf("aabaabaa", 'b', -1));
  +        assertEquals(0, StringUtils.lastIndexOf("aabaabaa", 'a', 0));
       }
   
       public void testLastIndexOf_String() {
           assertEquals(-1, StringUtils.lastIndexOf(null, null));
           assertEquals(-1, StringUtils.lastIndexOf("", null));
  +        assertEquals(-1, StringUtils.lastIndexOf("", "a"));
           assertEquals(0, StringUtils.lastIndexOf("", ""));
  +        assertEquals(8, StringUtils.lastIndexOf("aabaabaa", ""));
           assertEquals(7, StringUtils.lastIndexOf("aabaabaa", "a"));
           assertEquals(5, StringUtils.lastIndexOf("aabaabaa", "b"));
           assertEquals(4, StringUtils.lastIndexOf("aabaabaa", "ab"));
  @@ -213,19 +219,23 @@
           assertEquals(2, StringUtils.lastIndexOf("aabaabaa", "b", 3));
           assertEquals(5, StringUtils.lastIndexOf("aabaabaa", "b", 9));
           assertEquals(-1, StringUtils.lastIndexOf("aabaabaa", "b", -1));
  +        assertEquals(-1, StringUtils.lastIndexOf("aabaabaa", "b", 0));
  +        assertEquals(0, StringUtils.lastIndexOf("aabaabaa", "a", 0));
       }
   
       //-----------------------------------------------------------------------
  -    public void contains_char() {
  +    public void testContainsChar() {
           assertEquals(false, StringUtils.contains(null, ' '));
           assertEquals(false, StringUtils.contains("", ' '));
  +        assertEquals(false, StringUtils.contains("",null));
  +        assertEquals(false, StringUtils.contains(null,null));
           assertEquals(true, StringUtils.contains("abc", 'a'));
           assertEquals(true, StringUtils.contains("abc", 'b'));
           assertEquals(true, StringUtils.contains("abc", 'c'));
           assertEquals(false, StringUtils.contains("abc", 'z'));
       }
   
  -    public void contains_String() {
  +    public void testContainsString() {
           assertEquals(false, StringUtils.contains(null, null));
           assertEquals(false, StringUtils.contains(null, ""));
           assertEquals(false, StringUtils.contains(null, "a"));
  @@ -246,7 +256,15 @@
           assertEquals(-1, StringUtils.indexOfAny(FOOBAR, 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]));
  +        assertEquals(-1, StringUtils.indexOfAny("", new String[0]));
           assertEquals(-1, StringUtils.indexOfAny(FOOBAR, new String[] {"llll"}));
  +        assertEquals(0, StringUtils.indexOfAny(FOOBAR, new String[] {""}));
  +        assertEquals(0, StringUtils.indexOfAny("", new String[] {""}));
  +        assertEquals(-1, StringUtils.indexOfAny("", new String[] {"a"}));
  +        assertEquals(-1, StringUtils.indexOfAny("", new String[] {null}));
  +        assertEquals(-1, StringUtils.indexOfAny(FOOBAR, new String[] {null}));
  +        assertEquals(-1, StringUtils.indexOfAny(null, new String[] {null}));
       }
   
       public void testLastIndexOfAny() {
  @@ -255,7 +273,15 @@
           assertEquals(-1, StringUtils.lastIndexOfAny(FOOBAR, null));
           assertEquals(3, StringUtils.lastIndexOfAny(FOOBAR, FOOBAR_SUB_ARRAY));
           assertEquals(-1, StringUtils.lastIndexOfAny(FOOBAR, new String[0]));
  +        assertEquals(-1, StringUtils.lastIndexOfAny(null, new String[0]));
  +        assertEquals(-1, StringUtils.lastIndexOfAny("", new String[0]));
           assertEquals(-1, StringUtils.lastIndexOfAny(FOOBAR, new String[] {"llll"}));
  +        assertEquals(6, StringUtils.lastIndexOfAny(FOOBAR, new String[] {""}));
  +        assertEquals(0, StringUtils.lastIndexOfAny("", new String[] {""}));
  +        assertEquals(-1, StringUtils.lastIndexOfAny("", new String[] {"a"}));
  +        assertEquals(-1, StringUtils.lastIndexOfAny("", new String[] {null}));
  +        assertEquals(-1, StringUtils.lastIndexOfAny(FOOBAR, new String[] {null}));
  +        assertEquals(-1, StringUtils.lastIndexOfAny(null, new String[] {null}));
       }
   
       //-----------------------------------------------------------------------
  @@ -281,6 +307,18 @@
           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, 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'}));
       }
   
       //-----------------------------------------------------------------------
  
  
  
  1.36      +9 -1      
jakarta-commons/lang/src/test/org/apache/commons/lang/StringUtilsTest.java
  
  Index: StringUtilsTest.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/lang/src/test/org/apache/commons/lang/StringUtilsTest.java,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- StringUtilsTest.java      20 Jul 2003 15:49:58 -0000      1.35
  +++ StringUtilsTest.java      20 Jul 2003 23:57:26 -0000      1.36
  @@ -71,6 +71,7 @@
    * @author <a href="mailto:[EMAIL PROTECTED]>Fredrik Westermarck</a>
    * @author Holger Krauth
    * @author <a href="[EMAIL PROTECTED]">Henning P. Schmiedehausen</a>
  + * @author Phil Steitz
    * @version $Id$
    */
   public class StringUtilsTest extends TestCase {
  @@ -276,6 +277,13 @@
           res = StringUtils.split(str, '.');
           assertEquals(1, res.length);
           assertEquals("a", res[0]);
  +        
  +        str = "a b c";
  +        res = StringUtils.split(str,' ');
  +        assertEquals(3, res.length);
  +        assertEquals("a", res[0]);
  +        assertEquals("b", res[1]);
  +        assertEquals("c", res[2]);
       }
       
       public void testSplit_StringString_StringStringInt() {
  
  
  
  1.7       +15 -1     
jakarta-commons/lang/src/test/org/apache/commons/lang/StringUtilsSubstringTest.java
  
  Index: StringUtilsSubstringTest.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/lang/src/test/org/apache/commons/lang/StringUtilsSubstringTest.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- StringUtilsSubstringTest.java     20 Jul 2003 15:29:44 -0000      1.6
  +++ StringUtilsSubstringTest.java     20 Jul 2003 23:57:26 -0000      1.7
  @@ -63,6 +63,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Stephen Colebourne</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Ringo De Smet</a>
  + * @author Phil Steitz
    * @version $Id$
    */
   public class StringUtilsSubstringTest extends TestCase {
  @@ -111,8 +112,21 @@
           assertEquals(FOO, StringUtils.substring(SENTENCE, 0, -8));
           assertEquals("o", StringUtils.substring(SENTENCE, -9, -8));
           assertEquals(SENTENCE, StringUtils.substring(SENTENCE, 0, 80));
  +        assertEquals("", StringUtils.substring(SENTENCE, 2, 2));
  +        assertEquals("b",StringUtils.substring("abc", -2, -1));
       }
       
  +    public void testSubstring4() {
  +        assertEquals("", StringUtils.substring("",0));
  +        assertEquals("", StringUtils.substring("",2));
  +        assertEquals("", StringUtils.substring("",0,0));
  +        assertEquals("", StringUtils.substring("",1,2));
  +        assertEquals("", StringUtils.substring("",-2,-1));
  +        assertEquals(null, StringUtils.substring(null,0));
  +        assertEquals(null, StringUtils.substring(null,0,0));
  +        assertEquals(null, StringUtils.substring(null,1,2));
  +    }
  +           
       public void testLeft() {
           assertSame(null, StringUtils.left(null, 0));
           assertSame(null, StringUtils.left(null, 2));
  
  
  
  1.75      +162 -110  
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.74
  retrieving revision 1.75
  diff -u -r1.74 -r1.75
  --- StringUtils.java  20 Jul 2003 15:41:52 -0000      1.74
  +++ StringUtils.java  20 Jul 2003 23:57:26 -0000      1.75
  @@ -114,7 +114,7 @@
    *  <li>empty - a zero-length string (<code>""</code>)
    *  <li>space - the space character (<code>' '</code>)(char 32)
    *  <li>whitespace - the characters defined by [EMAIL PROTECTED] 
Character#isWhitespace(char)}
  - *  <li>trim - the characters &lt;= 32 as in [EMAIL PROTECTED] String#trim(String)}
  + *  <li>trim - the characters &lt;= 32 as in [EMAIL PROTECTED] String#trim()}
    * </ul>
    * 
    * <p><code>StringUtils</code> handles <code>null</code> input Strings quietly.
  @@ -141,6 +141,7 @@
    * @author <a href="mailto:[EMAIL PROTECTED]">Henning P. Schmiedehausen</a>
    * @author Arun Mammen Thomas
    * @author <a href="mailto:[EMAIL PROTECTED]">Gary Gregory</a>
  + * @author Phil Steitz
    * @since 1.0
    * @version $Id$
    */
  @@ -192,8 +193,7 @@
       //-----------------------------------------------------------------------
   
       /**
  -     * <p>Checks if a String is empty ("") or null.
  -     * <code>null</code> returns <code>false</code></p>
  +     * <p>Checks if a String is empty ("") or null.</p>
        * 
        * <pre>
        * StringUtils.isEmpty(null)      = true
  @@ -260,7 +260,7 @@
       }
   
       /**
  -     * <p>Checks if a String is not empty ("") and not null.</p>
  +     * <p>Checks if a String is not empty (""), not null and not whitespace 
only.</p>
        * 
        * <pre>
        * StringUtils.isNotBlank(null)      = false
  @@ -612,7 +612,7 @@
        * StringUtils.stripAll(["abc  ", null])  = ["abc", null]
        * </pre>
        * 
  -     * @param str  the array to remove whitespace from, may be null
  +     * @param strs  the array to remove whitespace from, may be null
        * @return the stripped Strings, <code>null</code> if null array input
        */
       public static String[] stripAll(String[] strs) {
  @@ -640,7 +640,7 @@
        * StringUtils.stripAll(["yabcz", null], "yz")  = ["abc", null]
        * </pre>
        * 
  -     * @param str  the array to remove characters from, may be null
  +     * @param strs  the array to remove characters from, may be null
        * @param stripChars  the characters to remove, null treated as whitespace
        * @return the stripped Strings, <code>null</code> if null array input
        */
  @@ -713,13 +713,13 @@
       
       /**
        * <p>Finds the first index within a String, handling <code>null</code>.
  -     * This method uses [EMAIL PROTECTED] String#indexOf(int)}</p>
  +     * This method uses [EMAIL PROTECTED] String#indexOf(int)}.</p>
        *
  -     * <p>A <code>null</code> String will return <code>-1</code>.</p>
  +     * <p>A <code>null</code> or empty ("") String will return <code>-1</code>.</p>
        * 
        * <pre>
  -     * StringUtils.indexOf(null, ' ')       = -1
  -     * StringUtils.indexOf("", ' ')         = -1
  +     * StringUtils.indexOf(null, *)         = -1
  +     * StringUtils.indexOf("", *)           = -1
        * StringUtils.indexOf("aabaabaa", 'a') = 0
        * StringUtils.indexOf("aabaabaa", 'b') = 2
        * </pre>
  @@ -739,17 +739,15 @@
       /**
        * <p>Finds the first index within a String from a start position,
        * handling <code>null</code>.
  -     * This method uses [EMAIL PROTECTED] String#indexOf(int, int)}</p>
  +     * This method uses [EMAIL PROTECTED] String#indexOf(int, int)}.</p>
        *
  -     * <p>A <code>null</code> String will return <code>-1</code>.
  +     * <p>A <code>null</code> or empty ("") String will return <code>-1</code>.
        * A negative start position is treated as zero.
        * A start position greater than the string length returns <code>-1</code>.</p>
        * 
        * <pre>
  -     * StringUtils.indexOf(null, ' ', 0)        = -1
  -     * StringUtils.indexOf(null, ' ', -1)       = -1
  -     * StringUtils.indexOf("", ' ', 0)          = -1
  -     * StringUtils.indexOf("", ' ', -1)         = -1
  +     * StringUtils.indexOf(null, *, *)          = -1
  +     * StringUtils.indexOf("", *, *)            = -1
        * StringUtils.indexOf("aabaabaa", 'b', 0)  = 2
        * StringUtils.indexOf("aabaabaa", 'b', 3)  = 5
        * StringUtils.indexOf("aabaabaa", 'b', 9)  = -1
  @@ -771,17 +769,18 @@
       
       /**
        * <p>Finds the first index within a String, handling <code>null</code>.
  -     * This method uses [EMAIL PROTECTED] String#indexOf(String)}</p>
  +     * This method uses [EMAIL PROTECTED] String#indexOf(String)}.</p>
        *
        * <p>A <code>null</code> String will return <code>-1</code>.</p>
        * 
        * <pre>
  -     * StringUtils.indexOf(null, null)       = -1
  -     * StringUtils.indexOf("", null)         = -1
  +     * StringUtils.indexOf(null, *)          = -1
  +     * StringUtils.indexOf(*, null)          = -1
        * StringUtils.indexOf("", "")           = 0
        * StringUtils.indexOf("aabaabaa", "a")  = 0
        * StringUtils.indexOf("aabaabaa", "b")  = 2
        * StringUtils.indexOf("aabaabaa", "ab") = 1
  +     * StringUtils.indexOf("aabaabaa", "")   = 0
        * </pre>
        * 
        * @param str  the String to check, may be null
  @@ -798,7 +797,7 @@
       
       /**
        * <p>Finds the first index within a String, handling <code>null</code>.
  -     * This method uses [EMAIL PROTECTED] String#indexOf(String, int)}</p>
  +     * This method uses [EMAIL PROTECTED] String#indexOf(String, int)}.</p>
        *
        * <p>A <code>null</code> String will return <code>-1</code>.
        * A negative start position is treated as zero.
  @@ -807,10 +806,8 @@
        * an empty search String.</p>
        * 
        * <pre>
  -     * StringUtils.indexOf(null, null, 0)       = -1
  -     * StringUtils.indexOf(null, null, -1)      = -1
  -     * StringUtils.indexOf("", null, 0)         = -1
  -     * StringUtils.indexOf("", null, -1)        = -1
  +     * StringUtils.indexOf(null, *, *)          = -1
  +     * StringUtils.indexOf(*, null, *)          = -1
        * StringUtils.indexOf("", "", 0)           = 0
        * StringUtils.indexOf("aabaabaa", "a", 0)  = 0
        * StringUtils.indexOf("aabaabaa", "b", 0)  = 2
  @@ -818,6 +815,7 @@
        * StringUtils.indexOf("aabaabaa", "b", 3)  = 5
        * StringUtils.indexOf("aabaabaa", "b", 9)  = -1
        * StringUtils.indexOf("aabaabaa", "b", -1) = 2
  +     * StringUtils.indexOf("aabaabaa", "", 2)   = 2
        * </pre>
        * 
        * @param str  the String to check, may be null
  @@ -838,13 +836,13 @@
       
       /**
        * <p>Finds the last index within a String, handling <code>null</code>.
  -     * This method uses [EMAIL PROTECTED] String#indexOf(int)}</p>
  +     * This method uses [EMAIL PROTECTED] String#lastIndexOf(int)}.</p>
        *
  -     * <p>A <code>null</code> String will return <code>-1</code>.</p>
  +     * <p>A <code>null</code> or empty ("") String will return <code>-1</code>.</p>
        * 
        * <pre>
  -     * StringUtils.lastIndexOf(null, ' ')       = -1
  -     * StringUtils.lastIndexOf("", ' ')         = -1
  +     * StringUtils.lastIndexOf(null, *)         = -1
  +     * StringUtils.lastIndexOf("", *)           = -1
        * StringUtils.lastIndexOf("aabaabaa", 'a') = 7
        * StringUtils.lastIndexOf("aabaabaa", 'b') = 5
        * </pre>
  @@ -864,22 +862,21 @@
       /**
        * <p>Finds the last index within a String from a start position,
        * handling <code>null</code>.
  -     * This method uses [EMAIL PROTECTED] String#indexOf(int, int)}</p>
  +     * This method uses [EMAIL PROTECTED] String#lastIndexOf(int, int)}.</p>
        *
  -     * <p>A <code>null</code> String will return <code>-1</code>.
  -     * A negative  or zero start position returns <code>-1</code>.
  +     * <p>A <code>null</code> or empty ("") String will return <code>-1</code>.
  +     * A negative start position returns <code>-1</code>.
        * A start position greater than the string length searches the whole 
string.</p>
        * 
        * <pre>
  -     * StringUtils.lastIndexOf(null, ' ', 0)        = -1
  -     * StringUtils.lastIndexOf(null, ' ', -1)       = -1
  -     * StringUtils.lastIndexOf("", ' ', 0)          = -1
  -     * StringUtils.lastIndexOf("", ' ', -1)         = -1
  +     * StringUtils.lastIndexOf(null, *, *)          = -1
  +     * StringUtils.lastIndexOf("", *,  *)           = -1
        * StringUtils.lastIndexOf("aabaabaa", 'b', 8)  = 5
        * StringUtils.lastIndexOf("aabaabaa", 'b', 4)  = 2
        * StringUtils.lastIndexOf("aabaabaa", 'b', 0)  = -1
        * StringUtils.lastIndexOf("aabaabaa", 'b', 9)  = 5
        * StringUtils.lastIndexOf("aabaabaa", 'b', -1) = -1
  +     * StringUtils.lastIndexOf("aabaabaa", 'a', 0)  = 0
        * </pre>
        * 
        * @param str  the String to check, may be null
  @@ -897,17 +894,18 @@
       
       /**
        * <p>Finds the last index within a String, handling <code>null</code>.
  -     * This method uses [EMAIL PROTECTED] String#indexOf(String)}</p>
  +     * This method uses [EMAIL PROTECTED] String#lastIndexOf(String)}.</p>
        *
        * <p>A <code>null</code> String will return <code>-1</code>.</p>
        * 
        * <pre>
  -     * StringUtils.lastIndexOf(null, null)       = -1
  -     * StringUtils.lastIndexOf("", null)         = -1
  +     * StringUtils.lastIndexOf(null, *)          = -1
  +     * StringUtils.lastIndexOf(*, null)          = -1
        * StringUtils.lastIndexOf("", "")           = 0
        * StringUtils.lastIndexOf("aabaabaa", "a")  = 0
        * StringUtils.lastIndexOf("aabaabaa", "b")  = 2
        * StringUtils.lastIndexOf("aabaabaa", "ab") = 1
  +     * StringUtils.lastIndexOf("aabaabaa", "")   = 8
        * </pre>
        * 
        * @param str  the String to check, may be null
  @@ -924,24 +922,23 @@
       
       /**
        * <p>Finds the first index within a String, handling <code>null</code>.
  -     * This method uses [EMAIL PROTECTED] String#indexOf(String, int)}</p>
  +     * This method uses [EMAIL PROTECTED] String#lastIndexOf(String, int)}.</p>
        *
        * <p>A <code>null</code> String will return <code>-1</code>.
        * A negative start position returns <code>-1</code>.
  -     * A zero start position only matches an empty String ("").
  -     * An empty ("") search String always matches unless start position negative.
  +     * An empty ("") search String always matches unless the start position is 
negative.
        * A start position greater than the string length searches the whole 
string.</p>
        * 
        * <pre>
  -     * StringUtils.lastIndexOf(null, null, 0)       = -1
  -     * StringUtils.lastIndexOf(null, null, -1)      = -1
  -     * StringUtils.lastIndexOf("", null, 0)         = -1
  -     * StringUtils.lastIndexOf("", null, -1)        = -1
  +     * StringUtils.lastIndexOf(null, *, *)          = -1
  +     * StringUtils.lastIndexOf(*, null, *)          = -1
        * StringUtils.lastIndexOf("aabaabaa", "a", 8)  = 7
        * StringUtils.lastIndexOf("aabaabaa", "b", 8)  = 5
        * StringUtils.lastIndexOf("aabaabaa", "ab", 8) = 4
        * StringUtils.lastIndexOf("aabaabaa", "b", 9)  = 5
        * StringUtils.lastIndexOf("aabaabaa", "b", -1) = -1
  +     * StringUtils.lastIndexOf("aabaabaa", "a", 0)  = 0
  +     * StringUtils.lastIndexOf("aabaabaa", "b", 0)  = -1
        * </pre>
        * 
        * @param str  the String to check, may be null
  @@ -962,13 +959,13 @@
       
       /**
        * <p>Checks if String contains a search character, handling <code>null</code>.
  -     * This method uses [EMAIL PROTECTED] String#indexOf(int)}</p>
  +     * This method uses [EMAIL PROTECTED] String#indexOf(int)}.</p>
        *
  -     * <p>A <code>null</code> String will return <code>-1</code>.</p>
  +     * <p>A <code>null</code> or empty ("") String will return 
<code>false</code>.</p>
        * 
        * <pre>
  -     * StringUtils.contains(null, ' ')  = false
  -     * StringUtils.contains("", ' ')    = false
  +     * StringUtils.contains(null, *)    = false
  +     * StringUtils.contains("", *)      = false
        * StringUtils.contains("abc", 'a') = true
        * StringUtils.contains("abc", 'z') = false
        * </pre>
  @@ -987,13 +984,13 @@
       
       /**
        * <p>Find the first index within a String, handling <code>null</code>.
  -     * This method uses [EMAIL PROTECTED] String#indexOf(String)}</p>
  +     * This method uses [EMAIL PROTECTED] String#indexOf(int)}.</p>
        *
  -     * <p>A <code>null</code> String will return <code>-1</code>.</p>
  +     * <p>A <code>null</code> String will return <code>false</code>.</p>
        * 
        * <pre>
  -     * StringUtils.contains(null, null)  = false
  -     * StringUtils.contains("", null)    = false
  +     * StringUtils.contains(null, *)     = false
  +     * StringUtils.contains(*, null)     = false
        * StringUtils.contains("", "")      = true
        * StringUtils.contains("abc", "")   = true
        * StringUtils.contains("abc", "a")  = true
  @@ -1019,19 +1016,22 @@
        * <p>Find the first index of any of a set of potential substrings.</p>
        *
        * <p>A <code>null</code> String will return <code>-1</code>.
  -     * A <code>null</code> search array will return <code>-1</code>.
  -     * A <code>null</code> search array entry will be ignored.</p>
  -     * 
  -     * <pre>
  -     * StringUtils.indexOfAny(null, null)                = -1
  -     * StringUtils.indexOfAny(null, ["ab","cd"])         = -1
  -     * StringUtils.indexOfAny("", null)                  = -1
  -     * StringUtils.indexOfAny("", ["ab","cd"])           = -1
  -     * StringUtils.indexOfAny("zzabyycdxx", null)        = -1
  -     * StringUtils.indexOfAny("zzabyycdxx", [])          = -1
  -     * StringUtils.indexOfAny("zzabyycdxx", ["ab","cd"]) = 2
  -     * StringUtils.indexOfAny("zzabyycdxx", ["cd","ab"]) = 2
  -     * StringUtils.indexOfAny("zzabyycdxx", ["mn","op"]) = -1
  +     * A <code>null</code> or zero length search array will return <code>-1</code>.
  +     * A <code>null</code> search array entry will be ignored, but a search
  +     * array containing "" will return <code>0</code> if <code>str</code> is not
  +     * null. This method uses [EMAIL PROTECTED] String#indexOf(String)}.</p>
  +     * 
  +     * <pre>
  +     * StringUtils.indexOfAny(null, *)                     = -1
  +     * StringUtils.indexOfAny(*, null)                     = -1
  +     * StringUtils.indexOfAny(*, [])                       = -1
  +     * StringUtils.indexOfAny("zzabyycdxx", ["ab","cd"])   = 2
  +     * StringUtils.indexOfAny("zzabyycdxx", ["cd","ab"])   = 2
  +     * StringUtils.indexOfAny("zzabyycdxx", ["mn","op"])   = -1
  +     * StringUtils.indexOfAny("zzabyycdxx", ["zab","aby"]) = 1
  +     * StringUtils.indexOfAny("zzabyycdxx", [""])          = 0
  +     * StringUtils.indexOfAny("", [""])                    = 0
  +     * StringUtils.indexOfAny("", ["a"])                   = -1
        * </pre>
        * 
        * @param str  the String to check, may be null
  @@ -1071,18 +1071,20 @@
        *
        * <p>A <code>null</code> String will return <code>-1</code>.
        * A <code>null</code> search array will return <code>-1</code>.
  -     * A <code>null</code> search array entry will be ignored.</p>
  +     * A <code>null</code> or zero length search array entry will be ignored,
  +     * but a search array containing "" will return the length of <code>str</code> 
  +     * if <code>str</code> is not null. This method uses [EMAIL PROTECTED] 
String#indexOf(String)}</p>
        * 
        * <pre>
  -     * StringUtils.lastIndexOfAny(null, null)                = -1
  -     * StringUtils.lastIndexOfAny(null, ["ab","cd"])         = -1
  -     * StringUtils.lastIndexOfAny("", null)                  = -1
  -     * StringUtils.lastIndexOfAny("", ["ab","cd"])           = -1
  -     * StringUtils.lastIndexOfAny("zzabyycdxx", null)        = -1
  -     * StringUtils.lastIndexOfAny("zzabyycdxx", [])          = -1
  +     * StringUtils.lastIndexOfAny(null, *)                   = -1
  +     * StringUtils.lastIndexOfAny(*, null)                   = -1
  +     * StringUtils.lastIndexOfAny(*, [])                     = -1
  +     * StringUtils.lastIndexOfAny(*, [null])                 = -1
        * StringUtils.lastIndexOfAny("zzabyycdxx", ["ab","cd"]) = 6
        * StringUtils.lastIndexOfAny("zzabyycdxx", ["cd","ab"]) = 6
        * StringUtils.lastIndexOfAny("zzabyycdxx", ["mn","op"]) = -1
  +     * StringUtils.lastIndexOfAny("zzabyycdxx", ["mn","op"]) = -1
  +     * StringUtils.lastIndexOfAny("zzabyycdxx", ["mn",""])   = 10
        * </pre>
        * 
        * @param str  the String to check, may be null
  @@ -1115,6 +1117,17 @@
       /**
        * <p>Search a String to find the first index of any
        * character not 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.indexOfAnyBut(null, *)                     = -1
  +     * StringUtils.indexOfAnyBut(*, null)                     = -1
  +     * StringUtils.indexOfAnyBut("zzabyycdxx",'za')           = 3
  +     * StringUtils.indexOfAnyBut("zzabyycdxx", '')            = 0
  +     * StringUtils.indexOfAnyBut("aba", 'ab')                 = -1
  +     * </pre>
        * 
        * @param str  the String to check, may be null
        * @param searchChars  the chars to search for, may be null
  @@ -1130,7 +1143,18 @@
       /**
        * <p>Search a String to find the first index of any
        * character not 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.indexOfAnyBut(null, *)                     = -1
  +     * StringUtils.indexOfAnyBut(*, null)                     = -1
  +     * StringUtils.indexOfAnyBut("zzabyycdxx", "za")          = 3
  +     * StringUtils.indexOfAnyBut("zzabyycdxx", "")            = 0
  +     * StringUtils.indexOfAnyBut("aba","ab")                  = -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
  @@ -1155,11 +1179,14 @@
       /**
        * <p>Checks if the String contains only certain characters.</p>
        *
  +     * <p>A <code>null</code> String will return <code>false</code>.
  +     * A <code>null</code> valid character array will return <code>false</code>.
  +     * An empty String ("") always returns <code>true</code>.</p>
  +     *
        * <pre>
  -     * StringUtils.containsOnly(null, 'abc')   = false
  -     * StringUtils.containsOnly("", null)      = false
  -     * StringUtils.containsOnly("", 'abc')     = true
  -     * StringUtils.containsOnly("", '')        = true
  +     * StringUtils.containsOnly(null, *)       = false
  +     * StringUtils.containsOnly(*, null)       = false
  +     * StringUtils.containsOnly("", *)         = true
        * StringUtils.containsOnly("ab", '')      = false
        * StringUtils.containsOnly("abab", 'abc') = true
        * StringUtils.containsOnly("ab1", 'abc')  = false
  @@ -1187,11 +1214,14 @@
       /**
        * <p>Checks if the String contains only certain characters.</p>
        *
  +     * <p>A <code>null</code> String will return <code>false</code>.
  +     * A <code>null</code> valid character String will return <code>false</code>.
  +     * An empty String ("") always returns <code>true</code>.</p>
  +     *
        * <pre>
  -     * StringUtils.containsOnly(null, "abc")   = false
  -     * StringUtils.containsOnly("", null)      = false
  -     * StringUtils.containsOnly("", "abc")     = true
  -     * StringUtils.containsOnly("", "")        = true
  +     * StringUtils.containsOnly(null, *)       = false
  +     * StringUtils.containsOnly(*, null)       = false
  +     * StringUtils.containsOnly("", *)         = true
        * StringUtils.containsOnly("ab", "")      = false
        * StringUtils.containsOnly("abab", "abc") = true
        * StringUtils.containsOnly("ab1", "abc")  = false
  @@ -1215,15 +1245,18 @@
       /**
        * <p>Checks that the String does not contain certain characters.</p>
        *
  +     * <p>A <code>null</code> String will return <code>true</code>.
  +     * A <code>null</code> invalid character array will return <code>true</code>.
  +     * An empty String ("") always returns true.</p>
  +     *
        * <pre>
  -     * StringUtils.containsOnly(null, 'xyz')   = true
  -     * StringUtils.containsOnly("", null)      = true
  -     * StringUtils.containsOnly("", 'xyz')     = true
  -     * StringUtils.containsOnly("", '')        = true
  -     * StringUtils.containsOnly("ab", '')      = true
  -     * StringUtils.containsOnly("abab", 'xyz') = true
  -     * StringUtils.containsOnly("ab1", 'xyz')  = true
  -     * StringUtils.containsOnly("abz", 'xyz')  = false
  +     * StringUtils.containsNone(null, *)       = true
  +     * StringUtils.containsNone(*, null)       = true
  +     * StringUtils.containsNone("", *)         = true
  +     * StringUtils.containsNone("ab", '')      = true
  +     * StringUtils.containsNone("abab", 'xyz') = true
  +     * StringUtils.containsNone("ab1", 'xyz')  = true
  +     * StringUtils.containsNone("abz", 'xyz')  = false
        * </pre>
        * 
        * @param str  the String to check, may be null
  @@ -1250,15 +1283,18 @@
       /**
        * <p>Checks that the String does not contain certain characters.</p>
        *
  +     * <p>A <code>null</code> String will return <code>true</code>.
  +     * A <code>null</code> invalid character array will return <code>true</code>.
  +     * An empty String ("") always returns true.</p>
  +     *
        * <pre>
  -     * StringUtils.containsOnly(null, "xyz")   = true
  -     * StringUtils.containsOnly("", null)      = true
  -     * StringUtils.containsOnly("", "xyz")     = true
  -     * StringUtils.containsOnly("", "")        = true
  -     * StringUtils.containsOnly("ab", "")      = true
  -     * StringUtils.containsOnly("abab", "xyz") = true
  -     * StringUtils.containsOnly("ab1", "xyz")  = true
  -     * StringUtils.containsOnly("abz", "xyz")  = false
  +     * StringUtils.containsNone(null, *)       = true
  +     * StringUtils.containsNone(*, null)       = true
  +     * StringUtils.containsNone("", *)         = true
  +     * StringUtils.containsNone("ab", "")      = true
  +     * StringUtils.containsNone("abab", "xyz") = true
  +     * StringUtils.containsNone("ab1", "xyz")  = true
  +     * StringUtils.containsNone("abz", "xyz")  = false
        * </pre>
        * 
        * @param str  the String to check, may be null
  @@ -1280,10 +1316,13 @@
        *
        * <p>A negative start position can be used to start <code>n</code>
        * characters from the end of the String.</p>
  +     *
  +     * <p>A <code>null</code> String will return <code>null</code>.
  +     * An empty ("") String will return "".</p>
        * 
        * <pre>
  -     * StringUtils.substring(null, 0)   = null
  -     * StringUtils.substring("", 0)     = ""
  +     * StringUtils.substring(null, *)   = null
  +     * StringUtils.substring("", *)     = ""
        * StringUtils.substring("abc", 0)  = "abc"
        * StringUtils.substring("abc", 2)  = "c"
        * StringUtils.substring("abc", 4)  = ""
  @@ -1321,14 +1360,24 @@
        *
        * <p>A negative start position can be used to start/end <code>n</code>
        * characters from the end of the String.</p>
  +     *
  +     * <p>The returned substring starts with the character in the <code>start</code>
  +     * position and ends before the <code>end</code> position. All postion counting 
is 
  +     * zero-based -- i.e., to start at the beginning of the string use 
  +     * <code>start = 0</code>. Negative start and end positions can be used to 
  +     * specify offsets relative to the end of the String.</p>
  +     *
  +     * <p>If <code>start</code> is not strictly to the left of <code>end</code>, ""
  +     * is returned.</p>
        * 
        * <pre>
  -     * StringUtils.substring(null, 0, 2)    = null
  -     * StringUtils.substring("", 0, 2)      = ""
  +     * StringUtils.substring(null, *, *)    = null
  +     * StringUtils.substring("", * ,  *)    = "";
        * StringUtils.substring("abc", 0, 2)   = "ab"
        * StringUtils.substring("abc", 2, 0)   = ""
        * StringUtils.substring("abc", 2, 4)   = "c"
        * StringUtils.substring("abc", 4, 6)   = ""
  +     * StringUtils.substring("abc", 2, 2)   = ""
        * StringUtils.substring("abc", -2, -1) = "b"
        * StringUtils.substring("abc", -4, 2)  = "ab"
        * </pre>
  @@ -1502,6 +1551,7 @@
        * StringUtils.split("")         = []
        * StringUtils.split("abc def")  = ["abc", "def"]
        * StringUtils.split("abc  def") = ["abc", "def"]
  +     * StringUtils.split(" abc ")    = ["abc"]
        * </pre>
        * 
        * @param str  the String to parse, may be null
  @@ -1521,15 +1571,17 @@
        * <p>A <code>null</code> input String returns <code>null</code>.</p>
        *
        * <pre>
  -     * StringUtils.split(null, '.')     = null
  -     * StringUtils.split("", '.')       = []
  -     * StringUtils.split("a.b.c", '.')  = ["a", "b", "c"]
  -     * StringUtils.split("a..b.c", '.') = ["a", "b", "c"]
  -     * StringUtils.split("a:b:c", '.')  = ["a:b:c"]
  +     * StringUtils.split(null, '.')       = null
  +     * StringUtils.split("", '.')         = []
  +     * StringUtils.split("a.b.c", '.')    = ["a", "b", "c"]
  +     * StringUtils.split("a..b.c", '.')   = ["a", "b", "c"]
  +     * StringUtils.split("a:b:c", '.')    = ["a:b:c"]
  +     * StringUtils.split("a\tb\nc", null) = ["a", "b", "c"]
  +     * StringUtils.split("a b c", ' ')    = ["a", "b", "c"]
        * </pre>
        * 
        * @param str  the String to parse, may be null
  -     * @param separatorChars  the characters used as the delimiters,
  +     * @param separatorChar  the character used as the delimiter,
        *  <code>null</code> splits on whitespace
        * @return an array of parsed Strings, <code>null</code> if null String input
        */
  @@ -2868,7 +2920,7 @@
   
       /**
        * <p>Capitalises a String changing the first letter to title case as
  -     * per [EMAIL PROTECTED] Character#toTitleCase()}. No other letters are 
changed.</p>
  +     * per [EMAIL PROTECTED] Character#toTitleCase(char)}. No other letters are 
changed.</p>
        * 
        * <p>A <code>null</code> input String returns <code>null</code>.</p>
        * 
  @@ -2895,7 +2947,7 @@
   
       /**
        * <p>Uncapitalises a String changing the first letter to title case as
  -     * per [EMAIL PROTECTED] Character#toLowerCase()}. No other letters are 
changed.</p>
  +     * per [EMAIL PROTECTED] Character#toLowerCase(char)}. No other letters are 
changed.</p>
        * 
        * <p>A <code>null</code> input String returns <code>null</code>.</p>
        * 
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to