Data Type Java

/*
  * JBoss, Home of Professional Open Source
  * Copyright 2005, JBoss Inc., and individual contributors as indicated
  * by the @authors tag. See the copyright.txt in the distribution for a
  * full listing of individual contributors.
  *
  * This is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as
  * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
public class Main{
  /** An empty string constant */
  public static final String EMPTY = "";
  /////////////////////////////////////////////////////////////////////////
  //                           Spliting Methods                          //
  /////////////////////////////////////////////////////////////////////////
  /**
   * Split up a string into multiple strings based on a delimiter.
   *
   * @param string  String to split up.
   * @param delim   Delimiter.
   * @param limit   Limit the number of strings to split into
   *                (-1 for no limit).
   * @return        Array of strings.
   */
  public static String[] split(final String string, final String delim,
     final int limit)
  {
     // get the count of delim in string, if count is > limit 
     // then use limit for count.  The number of delimiters is less by one
     // than the number of elements, so add one to count.
     int count = count(string, delim) + 1;
     if (limit > 0 && count > limit)
     {
        count = limit;
     }
     String strings[] = new String[count];
     int begin = 0;
     for (int i = 0; i < count; i++)
     {
        // get the next index of delim
        int end = string.indexOf(delim, begin);
        
        // if the end index is -1 or if this is the last element
        // then use the string's length for the end index
        if (end == -1 || i + 1 == count)
           end = string.length();
        // if end is 0, then the first element is empty
        if (end == 0)
           strings[i] = EMPTY;
        else
           strings[i] = string.substring(begin, end);
        // update the begining index
        begin = end + 1;
     }
     return strings;
  }
  /**
   * Split up a string into multiple strings based on a delimiter.
   *
   * @param string  String to split up.
   * @param delim   Delimiter.
   * @return        Array of strings.
   */
  public static String[] split(final String string, final String delim)
  {
     return split(string, delim, -1);
  }
  /////////////////////////////////////////////////////////////////////////
  //                          Counting Methods                           //
  /////////////////////////////////////////////////////////////////////////
  /**
   * Count the number of instances of substring within a string.
   *
   * @param string     String to look for substring in.
   * @param substring  Sub-string to look for.
   * @return           Count of substrings in string.
   */
  public static int count(final String string, final String substring)
  {
     int count = 0;
     int idx = 0;
     while ((idx = string.indexOf(substring, idx)) != -1)
     {
        idx++;
        count++;
     }
     return count;
  }
  /**
   * Count the number of instances of character within a string.
   *
   * @param string     String to look for substring in.
   * @param c          Character to look for.
   * @return           Count of substrings in string.
   */
  public static int count(final String string, final char c)
  {
     return count(string, String.valueOf(c));
  }
}