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