Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

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 //    int p = width - s.length();
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   public final static String[] split(String delimiter, String string) 
00102   {
00103     StringTokenizer st = new StringTokenizer(string, delimiter, false);
00104     int n = st.countTokens();
00105     int i = 0;
00106     try
00107     {
00108       String[] out = new String[n];
00109       while(st.hasMoreTokens())
00110         out[i++] = st.nextToken();
00111       return out;
00112     }
00113     catch (Exception e) { e.printStackTrace(); return new String[]{}; }
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   public final static String[] split(char delimiter, String string) 
00140   {
00141     StringTokenizer st = new StringTokenizer(string, delimiter, false);
00142     String[] out = new String[st.countTokens()+1];
00143     for (int i = 0; st.hasMoreTokens(); i++)
00144       out[i++] = st.nextToken();
00145     return out;
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 //      String err = args[i].ok() ? "" :
00230 //        ("(invalid because " + args[i].getMessage() + ")");
00231       buf.append("  " + args[i] + "\n");
00232     }
00233     return o.toString() + " = {\n" + buf + "};\n";
00234   }
00235 }