fix javadoc generation
[sbp.git] / src / edu / berkeley / sbp / util / StringUtil.java
1 // Copyright 2006-2007 all rights reserved; see LICENSE file for BSD-style license
2
3 package edu.berkeley.sbp.util;
4
5 /** miscellaneous string utilities */
6 public class StringUtil {
7
8     public static String pad(int i,String s) {
9         return s.length() >= i ? s : pad(i-1,s)+" ";
10     }
11
12     public static String join(String[] s, String sep) {
13         StringBuffer ret = new StringBuffer();
14         for(int i=0; i<s.length; i++) {
15             if (i>0) ret.append(sep);
16             ret.append(s[i]);
17         }
18         return ret.toString();
19     }
20     public static String toJavaString(String s) {
21         StringBuffer sb = new StringBuffer();
22         for(int i=0; i<s.length(); i++) {
23             char c = s.charAt(i);
24             switch(c) {
25                 case '\\': sb.append("\\\\");  break;
26                 case '\"': sb.append("\\\"");  break;
27                 case '\'': sb.append("\\\'");  break;
28                 case '\n':  sb.append("\\n");  break;
29                 case '\r':  sb.append("\\r");  break;
30                 case '\t':  sb.append("\\t");  break;
31                 default: sb.append(c); break;
32             }
33         }
34         return sb.toString();
35     }
36
37     public static String unescapify(String s) {
38         StringBuffer sb = new StringBuffer();
39         for(int i=0; i<s.length(); i++) {
40             char c = s.charAt(i);
41             if (c=='\\') {
42                 c = s.charAt(++i);
43                 switch(c) {
44                     case 'r': c = '\r'; break;
45                     case 'n': c = '\n'; break;
46                     case 't': c = '\t'; break;
47                     default: break;
48                 }
49             }
50             sb.append(c);
51         }
52         return sb.toString();
53     }
54     /*
55                 case ' ':  sb.append("\\ ");  break;
56                 case '{':  sb.append("\\{");  break;
57                 case '}':  sb.append("\\}");  break;
58                 case ':':  sb.append("\\:");  break;
59     */
60     public static String escapify(String s) { return escapify(s, "\\\n\r\t"); }
61     public static String escapify(String s, String illegal) {
62         if (s==null) return null;
63         StringBuffer sb = new StringBuffer();
64         for(int i=0; i<s.length(); i++) {
65             char c = s.charAt(i);
66             if (illegal.indexOf(c) != -1)
67                 switch(c) {
68                     case '\n':  sb.append("\\n"); continue;
69                     case '\r':  sb.append("\\r"); continue;
70                     case '\t':  sb.append("\\t"); continue;
71                     default:    sb.append('\\');  break;
72                 }
73             else if (c < 32 || c >= 127) {
74                 sb.append("\\x"+((int)c));
75             } else {
76                 sb.append(c);
77             }
78         }
79         return sb.toString();
80     }
81
82     public static String indent(String s, int indent) {
83         if (s.indexOf('\n')==-1) return s;
84         StringBuffer ret = new StringBuffer();
85         for(int i=0; i<s.length(); i++) {
86             char c = s.charAt(i);
87             ret.append(c);
88             if (c=='\n')
89                 for(int j=0; j<indent; j++)
90                     ret.append(' ');
91         }
92         return ret.toString();
93     }
94
95     public static String uncapitalize(String s) {
96         if (s==null) return null;
97         return (""+s.charAt(0)).toUpperCase()+s.substring(1);
98     }
99 }