hex.genmodel.utils.StringEscapeUtils Maven / Gradle / Ivy
package hex.genmodel.utils;
import java.io.StringWriter;
public class StringEscapeUtils {
/**
* Escapes new line characters of a given string.
* It also escapes the forward slash characters.
* @param str string to be escaped
* @return escaped string
*/
public static String escapeNewlines(String str) {
final int len = str.length();
StringWriter out = new StringWriter(len * 2);
for (int i = 0; i < len; i++) {
char c = str.charAt(i);
switch (c) {
case '\\':
out.write('\\');
out.write('\\');
break;
case '\n':
out.write('\\');
out.write('n');
break;
case '\r':
out.write('\\');
out.write('r');
break;
default:
out.write(c);
}
}
return out.toString();
}
/**
* Inverse function to {@see escapeNewlines}
* @param str escaped string
* @return unescaped
*/
public static String unescapeNewlines(String str) {
boolean hadSlash = false;
final int len = str.length();
StringWriter out = new StringWriter(len);
for (int i = 0; i < len; i++) {
char c = str.charAt(i);
if (hadSlash) {
switch (c) {
case 'n':
out.write('\n');
break;
case 'r':
out.write('\r');
break;
case '\\':
out.write('\\');
break;
default:
out.write(c);
}
hadSlash = false;
} else {
if (c == '\\')
hadSlash = true;
else
out.write(c);
}
}
return out.toString();
}
}