1 5 11 package com.opensymphony.webwork.views.util; 12 13 14 21 public class TextUtil { 22 24 protected static final int MAX_LENGTH = 300; 25 26 30 protected static final char[][] _stringChars = new char[MAX_LENGTH][]; 31 32 static { 33 initMapping(); 35 } 36 37 39 42 public static final String escapeHTML(String s) { 43 return escapeHTML(s, false); 44 } 45 46 52 public static final String escapeHTML(String s, boolean escapeEmpty) { 53 int len = s.length(); 54 55 if (len == 0) { 56 return s; 57 } 58 59 if (!escapeEmpty) { 60 String trimmed = s.trim(); 61 62 if ((trimmed.length() == 0) || ("\"\"").equals(trimmed)) { 63 return s; 64 } 65 } 66 67 int i = 0; 68 69 do { 72 int index = s.charAt(i); 73 74 if (index >= MAX_LENGTH) { 75 if (index != 0x20AC) { 77 continue; 78 } 79 80 break; 81 } else if (_stringChars[index] != null) { 82 break; 83 } 84 } while (++i < len); 85 86 if (i == len) { 89 return s; 90 } 91 92 StringBuffer sb = new StringBuffer (len + 40); 97 char[] chars = new char[len]; 98 99 s.getChars(0, len, chars, 0); 101 102 sb.append(chars, 0, i); 104 105 int last = i; 106 char[] subst; 107 108 for (; i < len; i++) { 109 char c = chars[i]; 110 int index = c; 111 112 if (index < MAX_LENGTH) { 113 subst = _stringChars[index]; 114 115 if (subst != null) { 117 if (i > last) { 118 sb.append(chars, last, i - last); 119 } 120 121 sb.append(subst); 122 last = i + 1; 123 } 124 } 125 else if (index == 0x20AC) { 128 if (i > last) { 129 sb.append(chars, last, i - last); 130 } 131 132 sb.append("€"); 133 last = i + 1; 134 } 135 } 136 137 if (i > last) { 138 sb.append(chars, last, i - last); 139 } 140 141 return sb.toString(); 142 } 143 144 protected static void addMapping(int c, String txt, String [] strings) { 145 strings[c] = txt; 146 } 147 148 protected static void initMapping() { 149 String [] strings = new String [MAX_LENGTH]; 150 151 addMapping(0x22, """, strings); addMapping(0x26, "&", strings); addMapping(0x3c, "<", strings); addMapping(0x3e, ">", strings); 156 addMapping(0xa1, "¡", strings); addMapping(0xa2, "¢", strings); addMapping(0xa3, "£", strings); addMapping(0xa9, "©", strings); addMapping(0xae, "®", strings); addMapping(0xbf, "¿", strings); 163 addMapping(0xc0, "À", strings); addMapping(0xc1, "Á", strings); addMapping(0xc2, "Â", strings); addMapping(0xc3, "Ã", strings); addMapping(0xc4, "Ä", strings); addMapping(0xc5, "Å", strings); addMapping(0xc6, "Æ", strings); addMapping(0xc7, "Ç", strings); addMapping(0xc8, "È", strings); addMapping(0xc9, "É", strings); addMapping(0xca, "Ê", strings); addMapping(0xcb, "Ë", strings); addMapping(0xcc, "Ì", strings); addMapping(0xcd, "Í", strings); addMapping(0xce, "Î", strings); addMapping(0xcf, "Ï", strings); 180 addMapping(0xd0, "Ð", strings); addMapping(0xd1, "Ñ", strings); addMapping(0xd2, "Ò", strings); addMapping(0xd3, "Ó", strings); addMapping(0xd4, "Ô", strings); addMapping(0xd5, "Õ", strings); addMapping(0xd6, "Ö", strings); addMapping(0xd7, "×", strings); addMapping(0xd8, "Ø", strings); addMapping(0xd9, "Ù", strings); addMapping(0xda, "Ú", strings); addMapping(0xdb, "Û", strings); addMapping(0xdc, "Ü", strings); addMapping(0xdd, "Ý", strings); addMapping(0xde, "Þ", strings); addMapping(0xdf, "ß", strings); 197 addMapping(0xe0, "à", strings); addMapping(0xe1, "á", strings); addMapping(0xe2, "â", strings); addMapping(0xe3, "ã", strings); addMapping(0xe4, "ä", strings); addMapping(0xe5, "å", strings); addMapping(0xe6, "æ", strings); addMapping(0xe7, "ç", strings); addMapping(0xe8, "è", strings); addMapping(0xe9, "é", strings); addMapping(0xea, "ê", strings); addMapping(0xeb, "ë", strings); addMapping(0xec, "ì", strings); addMapping(0xed, "í", strings); addMapping(0xee, "î", strings); addMapping(0xef, "ï", strings); 214 addMapping(0xf0, "ð", strings); addMapping(0xf1, "ñ", strings); addMapping(0xf2, "ò", strings); addMapping(0xf3, "ó", strings); addMapping(0xf4, "ô", strings); addMapping(0xf5, "õ", strings); addMapping(0xf6, "ö", strings); addMapping(0xf7, "÷", strings); addMapping(0xf8, "ø", strings); addMapping(0xf9, "ù", strings); addMapping(0xfa, "ú", strings); addMapping(0xfb, "û", strings); addMapping(0xfc, "ü", strings); addMapping(0xfd, "ý", strings); addMapping(0xfe, "þ", strings); addMapping(0xff, "ÿ", strings); 231 for (int i = 0; i < strings.length; i++) { 232 String str = strings[i]; 233 234 if (str != null) { 235 _stringChars[i] = str.toCharArray(); 236 } 237 } 238 } 239 } 240 | Popular Tags |