StringUtil.java
00001 package edu.virtualschool.jwaa;
00002
00003 import edu.virtualschool.jwaa.field.Validatable;
00004 import gnu.regexp.RE;
00005 import gnu.regexp.REException;
00006
00007 import java.util.List;
00008
00009 import org.apache.log4j.Logger;
00010
00016 public class StringUtil
00017 {
00018 final static Logger logger = Logger.getLogger(StringUtil.class.getName());
00027 public final static RE newRE(String s)
00028 {
00029 try { return new RE(s); }
00030 catch (REException e)
00031 {
00032 logger.error("REException in\n"+" \""+s+"\"\n", e);
00033 return null;
00034 }
00035 }
00036 public final static String replicate(int replications, String s)
00037 {
00038 StringBuffer buf = new StringBuffer();
00039 for (int i = 0; i < replications; i++)
00040 buf.append(s);
00041 return buf.toString();
00042 }
00050 public final static String stripNonAlphabetics(String v)
00051 {
00052 if (v == null) return null;
00053 StringBuffer buffer = new StringBuffer(v.length());
00054 for (int i = 0; i < v.length(); i++)
00055 {
00056 char c = v.charAt(i);
00057 if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
00058 buffer.append(c);
00059 }
00060 return buffer.toString();
00061 }
00062 public final static String stripNonDigits(Object vv)
00063 {
00064 if (vv == null)
00065 return null;
00066 String v = vv.toString();
00067 StringBuffer buf = new StringBuffer(v.length());
00068 for (int i = 0; i < v.length(); i++)
00069 {
00070 char c = v.charAt(i);
00071 if (c >= '0' && c <= '9')
00072 buf.append(c);
00073 }
00074 return buf.toString();
00075 }
00079 public final static String join(char delimiter, List args)
00080 {
00081 return join(delimiter, args.toArray());
00082 }
00083 public final static String join(char delimiter, Object[] strings)
00084 {
00085 StringBuffer b = new StringBuffer();
00086 for (int i = 0; i < strings.length; i++)
00087 b.append(strings[i] + (i < strings.length-1 ? delimiter+"" : ""));
00088 return b.toString();
00089 }
00090 public final static String alignLeft(int width, String s)
00091 {
00092
00093 if (s.length() == width)
00094 return s;
00095 else if (s.length() > width)
00096 return s.substring(0, width);
00097 else
00098 return s + replicate(width - s.length(), " ");
00099 }
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116 public final static String[] split(char delimiter, String string)
00117 {
00118 int len = string.length();
00119 int nDelim = 0;
00120 for (int i = 0; i < len; i++)
00121 if (string.charAt(i) == delimiter)
00122 nDelim++;
00123 String[] array = new String[nDelim+1];
00124 int begin = 0;
00125 int ndx = 0;
00126 for (int end = 0; end < len; end++)
00127 {
00128 if (string.charAt(end) == delimiter)
00129 {
00130 String s = string.substring(begin, end);
00131 array[ndx++] = s;
00132 begin = end+1;
00133 }
00134 }
00135 array[ndx] = string.substring(begin);
00136 return array;
00137 }
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00155 public static String toJavaString(int m, String s)
00156 {
00157 if (s == null) s = "";
00158 int l = s.length();
00159 StringBuffer b = new StringBuffer(s.length() + 2*(l/m)+1);
00160 for (int i = 0; i < l; i += m)
00161 {
00162 int j = i+m;
00163 if (j > l) j = l;
00164 b.append("\"" + s.substring(i, j) + "\"+\n");
00165 }
00166 return b + "\"\"";
00167 }
00179 public static String replace(Object pattern, Object replacement, Object source)
00180 {
00181 try
00182 {
00183 RE re = new RE(pattern.toString());
00184 return re.substitute(source.toString(), replacement.toString());
00185 }
00186 catch (Exception e)
00187 {
00188 logger.error("StringUtil.replace: Invalid RE\n"+
00189 " pattern:"+pattern+"\n"+
00190 " replacement:"+replacement+"\n"+
00191 " source:"+source, e);
00192 return source.toString();
00193 }
00194 }
00202 public final static String asButton(String op, Object value)
00203 {
00204 return "<input name=\""+op+"\" value=\""+value+ "\" type=\"submit\">";
00205 }
00214 public final static String asField(String op, Object value, int width)
00215 {
00216 return "<input name=\""+op+"\" value=\""+value+ "\" size=\""+width+"\">";
00217 }
00218 public final static String className(Class c)
00219 {
00220 String longName = c.getName();
00221 int index = longName.lastIndexOf(".");
00222 return longName.substring(index+1);
00223 }
00224 public final static String toString(Object o, Validatable[] args)
00225 {
00226 StringBuffer buf = new StringBuffer();
00227 for (int i = 0; i < args.length; i++)
00228 {
00229
00230
00231 buf.append(" " + args[i] + "\n");
00232 }
00233 return o.toString() + " = {\n" + buf + "};\n";
00234 }
00235 }