2022-07-25 06:14:46 +02:00

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[]{"&amp;", "&lt;", "&gt;", "&apos;", "&quot;", "&#x9;", "&#xA;", "&#xD;"};
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();
}
}