checkpoint
[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 join(String[] s, String sep) {
7         StringBuffer ret = new StringBuffer();
8         for(int i=0; i<s.length; i++) {
9             if (i>0) ret.append(sep);
10             ret.append(s[i]);
11         }
12         return ret.toString();
13     }
14     public static String toJavaString(String s) {
15         StringBuffer sb = new StringBuffer();
16         for(int i=0; i<s.length(); i++) {
17             char c = s.charAt(i);
18             switch(c) {
19                 case '\\': sb.append("\\\\");  break;
20                 case '\"': sb.append("\\\"");  break;
21                 case '\'': sb.append("\\\'");  break;
22                 case '\n':  sb.append("\\n");  break;
23                 case '\r':  sb.append("\\r");  break;
24                 default: sb.append(c); break;
25             }
26         }
27         return sb.toString();
28     }
29
30     public static String unescapify(String s) {
31         StringBuffer sb = new StringBuffer();
32         for(int i=0; i<s.length(); i++) {
33             char c = s.charAt(i);
34             if (c=='\\') {
35                 c = s.charAt(++i);
36                 switch(c) {
37                     case 'r': c = '\r'; break;
38                     case 'n': c = '\n'; break;
39                     default: break;
40                 }
41             }
42             sb.append(c);
43         }
44         return sb.toString();
45     }
46     /*
47                 case ' ':  sb.append("\\ ");  break;
48                 case '{':  sb.append("\\{");  break;
49                 case '}':  sb.append("\\}");  break;
50                 case ':':  sb.append("\\:");  break;
51     */
52     public static String escapify(String s) { return escapify(s, "\\\n\r"); }
53     public static String escapify(String s, String illegal) {
54         StringBuffer sb = new StringBuffer();
55         for(int i=0; i<s.length(); i++) {
56             char c = s.charAt(i);
57             if (illegal.indexOf(c) != -1)
58                 switch(c) {
59                     case '\n':  sb.append("\\n"); continue;
60                     case '\r':  sb.append("\\r"); continue;
61                     default:    sb.append('\\');  break;
62                 }
63             sb.append(c);
64         }
65         return sb.toString();
66     }
67 }