001: /*
002: * Copyright (C) 1999-2004 <A href="http://www-ist.massey.ac.nz/JBDietrich" target="_top">Jens Dietrich</a>
003: *
004: * This library is free software; you can redistribute it and/or
005: * modify it under the terms of the GNU Lesser General Public
006: * License as published by the Free Software Foundation; either
007: * version 2 of the License, or (at your option) any later version.
008: *
009: * This library is distributed in the hope that it will be useful,
010: * but WITHOUT ANY WARRANTY; without even the implied warranty of
011: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012: * Lesser General Public License for more details.
013: *
014: * You should have received a copy of the GNU Lesser General Public
015: * License along with this library; if not, write to the Free Software
016: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
017: */
018: package org.mandarax.util;
019:
020: import java.util.Collection;
021: import java.util.Iterator;
022:
023: /**
024: * Contains useful string utilities.
025: * @author <A href="http://www-ist.massey.ac.nz/JBDietrich" target="_top">Jens Dietrich</A>
026: * @version 3.4 <7 March 05>
027: * @since 1.1
028: */
029: public final class StringUtils {
030:
031: // this constant defines the separator used for printing lists
032: public static String SEPARATOR = ",";
033:
034: /**
035: * Get a print string for an array based on the
036: * print strings of the objects.
037: * @return the produced string
038: * @param objs the objects
039: */
040: public static String toString(Object[] objs) {
041: if (objs == null) {
042: return "?";
043: }
044:
045: boolean first = true;
046: StringBuffer buf = new StringBuffer();
047:
048: for (int i = 0; i < objs.length; i++) {
049: if (first) {
050: first = false;
051: } else {
052: buf.append(SEPARATOR);
053: }
054:
055: buf.append((objs[i] == null) ? "?" : objs[i].toString());
056: }
057:
058: return new String(buf);
059: }
060:
061: /**
062: * Get a print string for a collection based on the
063: * print strings of the objects it contains.
064: * @return the produced string
065: * @param coll a collection
066: */
067: public static String toString(Collection coll) {
068: return toString(coll.iterator());
069: }
070:
071: /**
072: * Get a print string for an iterator based on the
073: * print strings of the objects.
074: * @return the produced string
075: * @param it an iterator (should be new initialized in order to make sure that we include all objects)
076: */
077: public static String toString(Iterator it) {
078: if (it == null) {
079: return "?";
080: }
081:
082: boolean first = true;
083: StringBuffer buf = new StringBuffer();
084:
085: for (Iterator ii = it; ii.hasNext();) {
086: if (first) {
087: first = false;
088: } else {
089: buf.append(SEPARATOR);
090: }
091:
092: buf.append(ii.next().toString());
093: }
094:
095: return new String(buf);
096: }
097:
098: /**
099: * Split a string. E.g., calling this method with "23"+"54","+" yields {"23","54"}
100: * @param txt a string
101: * @param sep a separator
102: * @return an array of two strings or null if the separator has not be found
103: */
104: public static String[] split(String txt, String sep) {
105: int position = txt.indexOf(sep);
106: if (position == -1)
107: return null;
108: String[] parts = new String[2];
109: parts[0] = txt.substring(0, position);
110: parts[1] = txt.substring(position + sep.length());
111: return parts;
112: }
113: }
|