
net.fortytwo.sesametools.Formatting Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of common Show documentation
Show all versions of common Show documentation
Common utilities for Sesametools
The newest version!
package net.fortytwo.sesametools;
/**
* Miscellaneous helper methods for string formatting
*
* @author Joshua Shinavier (http://fortytwo.net)
*/
public class Formatting {
private Formatting() {
}
private static final int
FOUR = 4,
EIGHT = 8,
SIXTEEN = 16;
// Note: extended characters are not escaped for printing.
public static String escapeString(final String s) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
switch (c) {
case '\\':
sb.append("\\\\");
break;
case '\"':
sb.append("\\\"");
break;
case '\t':
sb.append("\\t");
break;
case '\n':
sb.append("\\n");
break;
case '\r':
sb.append("\\r");
break;
default:
sb.append(c);
}
}
return sb.toString();
}
// Note: assumes a properly formatted (escaped) String argument.
public static String unescapeString(final String s) {
StringBuilder sb = new StringBuilder();
String seq;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if ('\\' == c) {
i++;
switch (s.charAt(i)) {
case '\\':
sb.append('\\');
break;
case '\'':
sb.append('\'');
break;
case '\"':
sb.append('\"');
break;
case 't':
sb.append('\t');
break;
case 'n':
sb.append('\n');
break;
case 'r':
sb.append('\r');
break;
case 'u':
seq = s.substring(i + 1, i + FOUR + 1);
sb.append(toUnicodeChar(seq));
i += FOUR;
break;
case 'U':
seq = s.substring(i + 1, i + EIGHT + 1);
sb.append(toUnicodeChar(seq));
i += EIGHT;
break;
default:
throw new IllegalArgumentException("bad escape sequence: \\"
+ s.charAt(i) + " at character " + (i - 1));
}
} else {
sb.append(c);
}
}
return sb.toString();
}
private static char toUnicodeChar(final String unicode) {
return (char) Integer.parseInt(unicode, SIXTEEN);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy