copyright notices/updates
[sbp.git] / src / edu / berkeley / sbp / util / StringUtil.java
1 // Copyright 2006 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                 default: sb.append(c); break;
31             }
32         }
33         return sb.toString();
34     }
35
36     public static String unescapify(String s) {
37         StringBuffer sb = new StringBuffer();
38         for(int i=0; i<s.length(); i++) {
39             char c = s.charAt(i);
40             if (c=='\\') {
41                 c = s.charAt(++i);
42                 switch(c) {
43                     case 'r': c = '\r'; break;
44                     case 'n': c = '\n'; break;
45                     default: break;
46                 }
47             }
48             sb.append(c);
49         }
50         return sb.toString();
51     }
52     /*
53                 case ' ':  sb.append("\\ ");  break;
54                 case '{':  sb.append("\\{");  break;
55                 case '}':  sb.append("\\}");  break;
56                 case ':':  sb.append("\\:");  break;
57     */
58     public static String escapify(String s) { return escapify(s, "\\\n\r"); }
59     public static String escapify(String s, String illegal) {
60         if (s==null) return null;
61         StringBuffer sb = new StringBuffer();
62         for(int i=0; i<s.length(); i++) {
63             char c = s.charAt(i);
64             if (illegal.indexOf(c) != -1)
65                 switch(c) {
66                     case '\n':  sb.append("\\n"); continue;
67                     case '\r':  sb.append("\\r"); continue;
68                     default:    sb.append('\\');  break;
69                 }
70             else if (c < 32 || c >= 127) {
71                 sb.append("\\x"+((int)c));
72             } else {
73                 sb.append(c);
74             }
75         }
76         return sb.toString();
77     }
78
79     public static String indent(String s, int indent) {
80         if (s.indexOf('\n')==-1) return s;
81         StringBuffer ret = new StringBuffer();
82         for(int i=0; i<s.length(); i++) {
83             char c = s.charAt(i);
84             ret.append(c);
85             if (c=='\n')
86                 for(int j=0; j<indent; j++)
87                     ret.append(' ');
88         }
89         return ret.toString();
90     }
91 }