public static String asHTML(String text) { if (text == null) return ""; StringBuffer results = null; char[] orig = null; int beg = 0, len = text.length(); for (int i = 0; i < len; ++i) { char c = text.charAt(i); switch (c){ case 0: case '&': case '<': case '>': case '"': if (results == null) { orig = text.toCharArray(); results = new StringBuffer(len+10); } if (i > beg) results.append(orig, beg, i-beg); beg = i + 1; switch (c) { default: // case 0: continue; case '&': results.append("&"); break; case '<': results.append("<"); break; case '>': results.append(">"); break; case '"': results.append("""); break; } break; } } if (results == null) return text; results.append(orig, beg, len-beg); return results.toString(); }