1 package org.simantics.scl.runtime.string;
4 public class StringEscape {
6 public static String escapeJava(String str) {
7 return appendEscapedString(new StringBuilder(str.length()), str).toString();
10 public static StringBuilder appendEscapedString(StringBuilder b, String str) {
11 int length = str.length();
12 for(int i = 0; i < length; i++) {
13 char c = str.charAt(i);
38 b.append("\\u00" + Integer.toHexString(c));
40 b.append("\\u000" + Integer.toHexString(c));
47 b.append('\\').append('"');
50 b.append('\\').append('\\');
61 public static String unescapeJava(String str) {
62 int length = str.length();
63 StringBuilder b = new StringBuilder(length*3/2);
64 for(int i = 0; i < length; i++) {
65 char c = str.charAt(i);
68 c = str.charAt(i); // if i==length, this throws an exception, which is OK
70 case 'b': b.append('\b'); break;
71 case 't': b.append('\t'); break;
72 case 'n': b.append('\n'); break;
73 case 'f': b.append('\f'); break;
74 case 'r': b.append('\r'); break;
76 b.append((char)Integer.parseInt(str.substring(i+1, i+5), 16));
80 if(c >= '0' && c <= '9') {