1 22 package org.jahia.utils; 23 24 import java.util.Arrays ; 25 26 27 33 public class TextHtml { 34 40 public static String text2html(String text) { 41 if (text == null) 42 return text; 43 StringBuffer t = new StringBuffer (text.length() + 10); for (int i = 0; i < text.length(); i++) { 45 char c = text.charAt(i); 46 if ((int)c < symbolicCode.length) { String sc = symbolicCode[(int)c]; 49 if ("".equals(sc)) { 50 t = t.append(c); 51 } 52 else { 53 t = t.append(sc); 54 } 55 } 56 else { 57 t = t.append(c); 58 } 59 } 60 return t.toString(); 61 } 62 63 69 public static String html2text(String text) { 70 if (text == null) 71 return text; 72 StringBuffer t = new StringBuffer (text.length()); 73 for (int i = 0; i < text.length(); i++) { 74 char c = text.charAt(i); 75 if (c == '&') { 76 String code = String.valueOf(c); 77 do { 78 if (++i >= text.length()) 79 break; 80 if (text.charAt(i) == '&') { 81 i--; 82 break; 83 } 84 code += text.charAt(i); 85 } while (text.charAt(i) != ';'); 86 int index = Arrays.binarySearch(sortedSymbolicCode, 87 new NumericSymbolicCode(code, 0)); 88 if (index >= 0) { 90 t = t.append((char)sortedSymbolicCode[index].getNumericCode()); 91 } 92 else { 93 t = t.append(code); 94 } 95 } 96 else { 97 t = t.append(c); 98 } 99 } 100 return t.toString(); 101 } 102 103 109 private static final String [] symbolicCode = { 110 "", "", "", "", "", "", "", "", "", "", 112 "", "", "", "", "", "", "", "", "", "", 114 "", "", "", "", "", 116 "", "", "", "", "", 118 "", "", "", "", 120 """, "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 124 "", "", "", "", "", "", "", "", "", "", 126 "", "", "", "", 128 "@", "", "", "", "", "", 130 "", "", "", "", "", "", "", "", "", "", 132 "", "", "", "", "", "", "", "", "", "", 134 "", "", "", "", "", "", 136 "`", "", "", "", 138 "", "", "", "", "", "", "", "", "", "", 140 "", "", "", "", "", "", "", "", "", "", 142 "", "", "", "", "", "", "", "", "", "", 143 "", "", "", "", "", "", "", "", "", "", 144 "", "", "", "", "", "", 146 "’", "", "", "", 148 "", "", "", "", "", "", "", "", "", "", 150 "", "¡", "¢", "£", "¤", "¥", "¦", "§", "¨", "©", "ª", "«", "¬", "­", "®", "¯", "°", "±", "²", "³", "´", "µ", "¶", "·", "¸", "&supl;", "º", "»", "¼", "½", "¾", "¿", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "×", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "Þ", "ß", "à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "÷", "ø", "ù", "ú", "û", "ü", "ý", "þ", "ÿ", }; 257 258 262 private static NumericSymbolicCode[] sortedSymbolicCode = 263 new NumericSymbolicCode[symbolicCode.length]; 264 265 272 final private static class NumericSymbolicCode implements Comparable { 273 274 public NumericSymbolicCode(String symbolicCode, int numericCode) { 275 this.symbolicCode = symbolicCode; 276 this.numericCode = numericCode; 277 } 278 279 public String getSymbolicCode() { 280 return symbolicCode; 281 } 282 283 public int getNumericCode() { 284 return numericCode; 285 } 286 287 public int compareTo(Object object) { 288 NumericSymbolicCode nsc = (NumericSymbolicCode)object; 289 return symbolicCode.compareTo(nsc.symbolicCode); 290 } 291 292 private String symbolicCode; 293 private int numericCode; 294 } 295 296 299 static { 300 for (int i = 0; i < symbolicCode.length; i++) { 301 sortedSymbolicCode[i] = new NumericSymbolicCode(symbolicCode[i], i); 302 } 303 Arrays.sort(sortedSymbolicCode); 304 } 305 } 306 | Popular Tags |