src/share/classes/com/sun/tools/javac/util/Convert.java

Print this page




 222             buf.append(quote(s.charAt(i)));
 223         }
 224         return buf.toString();
 225     }
 226 
 227     /**
 228      * Escapes a character if it has an escape sequence or is
 229      * non-printable ASCII.  Leaves non-ASCII characters alone.
 230      */
 231     public static String quote(char ch) {
 232         switch (ch) {
 233         case '\b':  return "\\b";
 234         case '\f':  return "\\f";
 235         case '\n':  return "\\n";
 236         case '\r':  return "\\r";
 237         case '\t':  return "\\t";
 238         case '\'':  return "\\'";
 239         case '\"':  return "\\\"";
 240         case '\\':  return "\\\\";
 241         default:
 242             return (ch > 127 || isPrintableAscii(ch))
 243                 ? String.valueOf(ch)
 244                 : String.format("\\%03o", (int) ch);
 245         }
 246     }
 247 
 248     /**
 249      * Is a character printable ASCII?
 250      */
 251     private static boolean isPrintableAscii(char ch) {
 252         return ch >= ' ' && ch <= '~';
 253     }
 254 
 255     /** Escape all unicode characters in string.
 256      */
 257     public static String escapeUnicode(String s) {
 258         int len = s.length();
 259         int i = 0;
 260         while (i < len) {
 261             char ch = s.charAt(i);
 262             if (ch > 255) {
 263                 StringBuffer buf = new StringBuffer();
 264                 buf.append(s.substring(0, i));




 222             buf.append(quote(s.charAt(i)));
 223         }
 224         return buf.toString();
 225     }
 226 
 227     /**
 228      * Escapes a character if it has an escape sequence or is
 229      * non-printable ASCII.  Leaves non-ASCII characters alone.
 230      */
 231     public static String quote(char ch) {
 232         switch (ch) {
 233         case '\b':  return "\\b";
 234         case '\f':  return "\\f";
 235         case '\n':  return "\\n";
 236         case '\r':  return "\\r";
 237         case '\t':  return "\\t";
 238         case '\'':  return "\\'";
 239         case '\"':  return "\\\"";
 240         case '\\':  return "\\\\";
 241         default:
 242             return (isPrintableAscii(ch))
 243                 ? String.valueOf(ch)
 244                 : String.format("\\u%04x", (int) ch);
 245         }
 246     }
 247 
 248     /**
 249      * Is a character printable ASCII?
 250      */
 251     private static boolean isPrintableAscii(char ch) {
 252         return ch >= ' ' && ch <= '~';
 253     }
 254 
 255     /** Escape all unicode characters in string.
 256      */
 257     public static String escapeUnicode(String s) {
 258         int len = s.length();
 259         int i = 0;
 260         while (i < len) {
 261             char ch = s.charAt(i);
 262             if (ch > 255) {
 263                 StringBuffer buf = new StringBuffer();
 264                 buf.append(s.substring(0, i));