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