StringUtils.java

/*
 * StringUtils
 *
 * $Id$
 * $HeadURL$
 */
package gov.usgs.util;

import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

/**
 * String parsing and utility functions.
 */
public class StringUtils {

  /**
   * @param value value to encode
   * @return Utf8 encoded string
   * @throws UnsupportedEncodingException if character encoding is not supported
   */
  public static String encodeAsUtf8(final String value) throws UnsupportedEncodingException {
    byte[] utf8Bytes = value.getBytes(StandardCharsets.UTF_8);
    return new String(utf8Bytes, StandardCharsets.UTF_8);
  }

  /**
   * No Exception Double parsing method.
   *
   * @param value string to get double from
   * @return null on error, otherwise Double value.
   */
  public static Double getDouble(final String value) {
    Double d;
    try {
      d = Double.valueOf(value);
    } catch (Exception e) {
      d = null;
    }
    return d;
  }

  /**
   * No Exception Float parsing method.
   *
   * @param value string to get float from
   * @return null on error, otherwise Float value.
   */
  public static Float getFloat(final String value) {
    Float f;
    try {
      f = Float.valueOf(value);
    } catch (Exception e) {
      f = null;
    }
    return f;
  }

  /**
   * No Exception Integer parsing method.
   *
   * @param value string to get integer from
   * @return null on error, otherwise Integer value.
   */
  public static Integer getInteger(final String value) {
    Integer i;
    try {
      i = Integer.valueOf(value);
    } catch (Exception e) {
      i = null;
    }
    return i;
  }

  /**
   * No Exception Long parsing method.
   *
   * @param value string to get long from
   * @return null on error, otherwise Integer value.
   */
  public static Long getLong(final String value) {
    Long l;
    try {
      l = Long.valueOf(value);
    } catch (Exception e) {
      l = null;
    }
    return l;
  }

  /**
   * Join objects in a list using the specified delimiter. The objects toString
   * method is used to get a string value.
   *
   * @param delimiter string to insert between list items.
   * @param list      items to join.
   * @return string containing delimiter delimited list items.
   */
  public static String join(final List<Object> list, final String delimiter) {
    if (list == null || list.size() == 0) {
      return "";
    }

    StringBuffer buf = new StringBuffer();
    Iterator<Object> iter = list.iterator();
    // add first element to buffer
    if (iter.hasNext()) {
      buf.append(iter.next().toString());
    }
    // add delimiter before other elements
    while (iter.hasNext()) {
      buf.append(delimiter);
      buf.append(iter.next().toString());
    }

    return buf.toString();
  }

  /**
   * Split a string into a list of strings using the specified delimiter. The
   * intrinsic String.split method is used and elements of the returned String
   * array (if any) are added to a list.
   *
   * @param toSplit   string to split.
   * @param delimiter string used to separate items in toSplit
   * @return a list containing items.
   */
  public static List<String> split(final String toSplit, final String delimiter) {
    List<String> list = new LinkedList<String>();
    if (toSplit != null) {
      String[] array = toSplit.split(delimiter);
      for (String value : array) {
        value = value.trim();
        if (!"".equals(value)) {
          list.add(value);
        }
      }
    }
    return list;
  }

}