49 lines
1.3 KiB
Java
49 lines
1.3 KiB
Java
package btools.util;
|
|
|
|
/**
|
|
* Some methods for String handling
|
|
*/
|
|
public class StringUtils {
|
|
private static char[] xmlChr = new char[]{'&', '<', '>', '\'', '"', '\t', '\n', '\r'};
|
|
private static String[] xmlEsc = new String[]{"&", "<", ">", "'", """, "	", "
", "
"};
|
|
|
|
private static char[] jsnChr = new char[]{'\'', '"', '\\', '/'};
|
|
private static String[] jsnEsc = new String[]{"\\'", "\\\"", "\\\\", "\\/"};
|
|
|
|
/**
|
|
* Escape a literal to put into a json document
|
|
*/
|
|
public static String escapeJson(String s) {
|
|
return escape(s, jsnChr, jsnEsc);
|
|
}
|
|
|
|
/**
|
|
* Escape a literal to put into a xml document
|
|
*/
|
|
public static String escapeXml10(String s) {
|
|
return escape(s, xmlChr, xmlEsc);
|
|
}
|
|
|
|
private static String escape(String s, char[] chr, String[] esc) {
|
|
StringBuilder sb = null;
|
|
for (int i = 0; i < s.length(); i++) {
|
|
char c = s.charAt(i);
|
|
int j = 0;
|
|
while (j < chr.length) {
|
|
if (c == chr[j]) {
|
|
if (sb == null) {
|
|
sb = new StringBuilder(s.substring(0, i));
|
|
}
|
|
sb.append(esc[j]);
|
|
break;
|
|
}
|
|
j++;
|
|
}
|
|
if (sb != null && j == chr.length) {
|
|
sb.append(c);
|
|
}
|
|
}
|
|
return sb == null ? s : sb.toString();
|
|
}
|
|
}
|