code: public static String escape(String src) {
          // first pass to determine the length of the buffer so we only allocate once
          int length = 0;
          for (int i = 0; i < src.length(); i++) {
              char c = src.charAt(i);
              String escape = getEscape(c);
              if (escape != null) {
                  length += escape.length();
              } else {
                  length += 1;
              }
          }
  
          // skip copy if no escaping is needed
          if (length == src.length()) {
              return src;
          }
  
          // second pass to build the escaped string
          StringBuilder buf = new StringBuilder(length);
          for (int i = 0; i < src.length(); i++) {
              char c = src.charAt(i);
              String escape = getEscape(c);
              if (escape != null) {
                  buf.append(escape);
              } else {
                  buf.append(c);
              }
          }
          return buf.toString();
      }
docs: Escape a string.
  
  @param src the string to escape; must not be null
  @return the escaped string