content: 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();
    }
  }
  