| 1 | using System; |
|---|
| 2 | using System.Collections.Generic; |
|---|
| 3 | using System.Text; |
|---|
| 4 | using System.Net; |
|---|
| 5 | using System.Text.RegularExpressions; |
|---|
| 6 | using System.Globalization; |
|---|
| 7 | |
|---|
| 8 | namespace Misuzilla.Applications.TwitterIrcGateway |
|---|
| 9 | { |
|---|
| 10 | public static class Utility |
|---|
| 11 | { |
|---|
| 12 | static Utility() |
|---|
| 13 | { |
|---|
| 14 | InitializeCharEntityReferenceTable(); |
|---|
| 15 | } |
|---|
| 16 | |
|---|
| 17 | /// <summary> |
|---|
| 18 | /// �d���������������擾���܂��B |
|---|
| 19 | /// </summary> |
|---|
| 20 | /// <param name="text">�Ώۂ̕�����aram> |
|---|
| 21 | /// <param name="hintTexts">�q���g�ƂȂ镶����R���N�V����</param> |
|---|
| 22 | /// <returns></returns> |
|---|
| 23 | public static String DetectRedundantSuffix(String text, ICollection<String> hintTexts) |
|---|
| 24 | { |
|---|
| 25 | String redundantSuffix = null; |
|---|
| 26 | String a1 = text; |
|---|
| 27 | foreach (var a2 in hintTexts) |
|---|
| 28 | { |
|---|
| 29 | for (var i = 0; i < a1.Length; i++) |
|---|
| 30 | { |
|---|
| 31 | var pos = a2.LastIndexOf(a1.Substring(i)); |
|---|
| 32 | if (pos > -1) |
|---|
| 33 | { |
|---|
| 34 | var suffix = a1.Substring(i); |
|---|
| 35 | var matches = Regex.Matches(suffix, @"^(\s*(\(.{2,}\)|\[.{2,}\]|\*.{2,}\*|lang:ja)+)$"); |
|---|
| 36 | if (matches.Count > 0) |
|---|
| 37 | { |
|---|
| 38 | redundantSuffix = a1 = suffix; |
|---|
| 39 | break; |
|---|
| 40 | } |
|---|
| 41 | } |
|---|
| 42 | } |
|---|
| 43 | } |
|---|
| 44 | |
|---|
| 45 | return redundantSuffix; |
|---|
| 46 | } |
|---|
| 47 | |
|---|
| 48 | /// <summary> |
|---|
| 49 | /// ��������ateTime�^�ɕϊ����܂��B |
|---|
| 50 | /// </summary> |
|---|
| 51 | /// <param name="dateTimeString"></param> |
|---|
| 52 | /// <returns></returns> |
|---|
| 53 | public static DateTime ParseDateTime(String dateTimeString) |
|---|
| 54 | { |
|---|
| 55 | DateTime dateTime; |
|---|
| 56 | if (!DateTime.TryParseExact(dateTimeString, "ddd MMM dd HH:mm:ss zz00 yyyy", CultureInfo.InvariantCulture.DateTimeFormat, DateTimeStyles.None, out dateTime)) |
|---|
| 57 | { |
|---|
| 58 | dateTime = DateTime.Now; |
|---|
| 59 | } |
|---|
| 60 | |
|---|
| 61 | return dateTime; |
|---|
| 62 | } |
|---|
| 63 | |
|---|
| 64 | /// <summary> |
|---|
| 65 | /// ������TinyURL ��J���܂��B |
|---|
| 66 | /// �^�C���A�E�g�����ł̎��Ԃ��b�ł��B |
|---|
| 67 | /// </summary> |
|---|
| 68 | /// <param name="message">���b�Z�[�W</param> |
|---|
| 69 | /// <returns></returns> |
|---|
| 70 | public static String ResolveTinyUrlInMessage(String message) |
|---|
| 71 | { |
|---|
| 72 | return ResolveTinyUrlInMessage(message, 1000); |
|---|
| 73 | } |
|---|
| 74 | |
|---|
| 75 | /// <summary> |
|---|
| 76 | /// ������TinyURL ��J���܂��B |
|---|
| 77 | /// </summary> |
|---|
| 78 | /// <param name="message">���b�Z�[�W</param> |
|---|
| 79 | /// <param name="timeOut">�^�C���A�E�g�����ł̎���/param> |
|---|
| 80 | /// <returns></returns> |
|---|
| 81 | public static String ResolveTinyUrlInMessage(String message, Int32 timeOut) |
|---|
| 82 | { |
|---|
| 83 | return Regex.Replace(message, @"http://tinyurl\.com/[A-Za-z0-9_/.;%&\-]+", delegate(Match m) |
|---|
| 84 | { |
|---|
| 85 | return ResolveTinyUrl(m.Value, timeOut); |
|---|
| 86 | }, RegexOptions.IgnoreCase); |
|---|
| 87 | } |
|---|
| 88 | |
|---|
| 89 | /// <summary> |
|---|
| 90 | /// TinyURL��_�C���N�g��URL�ɓW�J���܂��B |
|---|
| 91 | /// </summary> |
|---|
| 92 | /// <param name="url">TinyURL��RL</param> |
|---|
| 93 | /// <param name="timeOut">�^�C���A�E�g�����ł̎���/param> |
|---|
| 94 | /// <returns></returns> |
|---|
| 95 | public static String ResolveTinyUrl(String url, Int32 timeOut) |
|---|
| 96 | { |
|---|
| 97 | HttpWebResponse res = null; |
|---|
| 98 | try |
|---|
| 99 | { |
|---|
| 100 | HttpWebRequest req = HttpWebRequest.Create(url) as HttpWebRequest; |
|---|
| 101 | req.AllowAutoRedirect = false; |
|---|
| 102 | req.Timeout = timeOut; |
|---|
| 103 | req.Method = "HEAD"; |
|---|
| 104 | res = req.GetResponse() as HttpWebResponse; |
|---|
| 105 | |
|---|
| 106 | if (res.StatusCode == HttpStatusCode.MovedPermanently) |
|---|
| 107 | { |
|---|
| 108 | if (!String.IsNullOrEmpty(res.Headers["Location"])) |
|---|
| 109 | { |
|---|
| 110 | return res.Headers["Location"]; |
|---|
| 111 | } |
|---|
| 112 | } |
|---|
| 113 | return url; |
|---|
| 114 | } |
|---|
| 115 | catch (WebException) |
|---|
| 116 | { |
|---|
| 117 | return url; |
|---|
| 118 | } |
|---|
| 119 | finally |
|---|
| 120 | { |
|---|
| 121 | if (res != null) |
|---|
| 122 | { |
|---|
| 123 | res.Close(); |
|---|
| 124 | } |
|---|
| 125 | } |
|---|
| 126 | } |
|---|
| 127 | |
|---|
| 128 | /// <summary> |
|---|
| 129 | /// ������RL�G���R�[�h���܂��B |
|---|
| 130 | /// </summary> |
|---|
| 131 | /// <param name="s">URL�G���R�[�h���镶����aram> |
|---|
| 132 | /// <returns>URL�G���R�[�h���ꂽ������eturns> |
|---|
| 133 | public static String UrlEncode(String s) |
|---|
| 134 | { |
|---|
| 135 | StringBuilder sb = new StringBuilder(); |
|---|
| 136 | Byte[] bytes = Encoding.UTF8.GetBytes(s); |
|---|
| 137 | foreach (Byte b in bytes) |
|---|
| 138 | { |
|---|
| 139 | sb.AppendFormat("%{0:x2}", b); |
|---|
| 140 | } |
|---|
| 141 | |
|---|
| 142 | return sb.ToString(); |
|---|
| 143 | } |
|---|
| 144 | |
|---|
| 145 | /// <summary> |
|---|
| 146 | /// HTML �̐��l�����Q�ƁE��ԎQ�Ƃ�ɖ߂��܂��B |
|---|
| 147 | /// </summary> |
|---|
| 148 | /// <param name="s"></param> |
|---|
| 149 | /// <returns></returns> |
|---|
| 150 | public static String UnescapeCharReference(String s) |
|---|
| 151 | { |
|---|
| 152 | return _regexEntityRef.Replace(s, new MatchEvaluator(ReplaceMatchEvaluator)); |
|---|
| 153 | } |
|---|
| 154 | |
|---|
| 155 | private static Regex _regexEntityRef = new Regex("&(#(?<dig>\\d+|x[0-9a-fA-F]+)|(?<char>[a-zA-Z0-9]{2,8}));", RegexOptions.Singleline); |
|---|
| 156 | private static Dictionary<String, String> _entityReferenceTable; |
|---|
| 157 | private static void InitializeCharEntityReferenceTable() |
|---|
| 158 | { |
|---|
| 159 | _entityReferenceTable = new Dictionary<string,string>(StringComparer.InvariantCultureIgnoreCase); |
|---|
| 160 | _entityReferenceTable["nbsp"] = "\u00a0"; |
|---|
| 161 | _entityReferenceTable["iexcl"] = "\u00a1"; |
|---|
| 162 | _entityReferenceTable["cent"] = "\u00a2"; |
|---|
| 163 | _entityReferenceTable["pound"] = "\u00a3"; |
|---|
| 164 | _entityReferenceTable["curren"] = "\u00a4"; |
|---|
| 165 | _entityReferenceTable["yen"] = "\u00a5"; |
|---|
| 166 | _entityReferenceTable["brvbar"] = "\u00a6"; |
|---|
| 167 | _entityReferenceTable["sect"] = "\u00a7"; |
|---|
| 168 | _entityReferenceTable["uml"] = "\u00a8"; |
|---|
| 169 | //EntityReferenceTable["copy"] = "\u00a9"; |
|---|
| 170 | _entityReferenceTable["copy"] = "(C)"; |
|---|
| 171 | _entityReferenceTable["ordf"] = "\u00aa"; |
|---|
| 172 | _entityReferenceTable["laquo"] = "\u00ab"; |
|---|
| 173 | _entityReferenceTable["not"] = "\u00ac"; |
|---|
| 174 | _entityReferenceTable["shy"] = "\u00ad"; |
|---|
| 175 | //EntityReferenceTable["reg"] = "\u00ae"; |
|---|
| 176 | _entityReferenceTable["reg"] = "(R)"; |
|---|
| 177 | _entityReferenceTable["macr"] = "\u00af"; |
|---|
| 178 | _entityReferenceTable["deg"] = "\u00b0"; |
|---|
| 179 | _entityReferenceTable["plusmn"] = "\u00b1"; |
|---|
| 180 | _entityReferenceTable["sup2"] = "\u00b2"; |
|---|
| 181 | _entityReferenceTable["sup3"] = "\u00b3"; |
|---|
| 182 | _entityReferenceTable["acute"] = "\u00b4"; |
|---|
| 183 | _entityReferenceTable["micro"] = "\u00b5"; |
|---|
| 184 | _entityReferenceTable["para"] = "\u00b6"; |
|---|
| 185 | _entityReferenceTable["middot"] = "\u00b7"; |
|---|
| 186 | _entityReferenceTable["cedil"] = "\u00b8"; |
|---|
| 187 | _entityReferenceTable["sup1"] = "\u00b9"; |
|---|
| 188 | _entityReferenceTable["ordm"] = "\u00ba"; |
|---|
| 189 | _entityReferenceTable["raquo"] = "\u00bb"; |
|---|
| 190 | _entityReferenceTable["frac14"] = "\u00bc"; |
|---|
| 191 | _entityReferenceTable["frac12"] = "\u00bd"; |
|---|
| 192 | _entityReferenceTable["frac34"] = "\u00be"; |
|---|
| 193 | _entityReferenceTable["iquest"] = "\u00bf"; |
|---|
| 194 | _entityReferenceTable["Agrave"] = "\u00c0"; |
|---|
| 195 | _entityReferenceTable["Aacute"] = "\u00c1"; |
|---|
| 196 | _entityReferenceTable["Acirc"] = "\u00c2"; |
|---|
| 197 | _entityReferenceTable["Atilde"] = "\u00c3"; |
|---|
| 198 | _entityReferenceTable["Auml"] = "\u00c4"; |
|---|
| 199 | _entityReferenceTable["Aring"] = "\u00c5"; |
|---|
| 200 | _entityReferenceTable["AElig"] = "\u00c6"; |
|---|
| 201 | _entityReferenceTable["Ccedil"] = "\u00c7"; |
|---|
| 202 | _entityReferenceTable["Egrave"] = "\u00c8"; |
|---|
| 203 | _entityReferenceTable["Eacute"] = "\u00c9"; |
|---|
| 204 | _entityReferenceTable["Ecirc"] = "\u00ca"; |
|---|
| 205 | _entityReferenceTable["Euml"] = "\u00cb"; |
|---|
| 206 | _entityReferenceTable["Igrave"] = "\u00cc"; |
|---|
| 207 | _entityReferenceTable["Iacute"] = "\u00cd"; |
|---|
| 208 | _entityReferenceTable["Icirc"] = "\u00ce"; |
|---|
| 209 | _entityReferenceTable["Iuml"] = "\u00cf"; |
|---|
| 210 | _entityReferenceTable["ETH"] = "\u00d0"; |
|---|
| 211 | _entityReferenceTable["Ntilde"] = "\u00d1"; |
|---|
| 212 | _entityReferenceTable["Ograve"] = "\u00d2"; |
|---|
| 213 | _entityReferenceTable["Oacute"] = "\u00d3"; |
|---|
| 214 | _entityReferenceTable["Ocirc"] = "\u00d4"; |
|---|
| 215 | _entityReferenceTable["Otilde"] = "\u00d5"; |
|---|
| 216 | _entityReferenceTable["Ouml"] = "\u00d6"; |
|---|
| 217 | _entityReferenceTable["times"] = "\u00d7"; |
|---|
| 218 | _entityReferenceTable["Oslash"] = "\u00d8"; |
|---|
| 219 | _entityReferenceTable["Ugrave"] = "\u00d9"; |
|---|
| 220 | _entityReferenceTable["Uacute"] = "\u00da"; |
|---|
| 221 | _entityReferenceTable["Ucirc"] = "\u00db"; |
|---|
| 222 | _entityReferenceTable["Uuml"] = "\u00dc"; |
|---|
| 223 | _entityReferenceTable["Yacute"] = "\u00dd"; |
|---|
| 224 | _entityReferenceTable["THORN"] = "\u00de"; |
|---|
| 225 | _entityReferenceTable["szlig"] = "\u00df"; |
|---|
| 226 | _entityReferenceTable["agrave"] = "\u00e0"; |
|---|
| 227 | _entityReferenceTable["aacute"] = "\u00e1"; |
|---|
| 228 | _entityReferenceTable["acirc"] = "\u00e2"; |
|---|
| 229 | _entityReferenceTable["atilde"] = "\u00e3"; |
|---|
| 230 | _entityReferenceTable["auml"] = "\u00e4"; |
|---|
| 231 | _entityReferenceTable["aring"] = "\u00e5"; |
|---|
| 232 | _entityReferenceTable["aelig"] = "\u00e6"; |
|---|
| 233 | _entityReferenceTable["ccedil"] = "\u00e7"; |
|---|
| 234 | _entityReferenceTable["egrave"] = "\u00e8"; |
|---|
| 235 | _entityReferenceTable["eacute"] = "\u00e9"; |
|---|
| 236 | _entityReferenceTable["ecirc"] = "\u00ea"; |
|---|
| 237 | _entityReferenceTable["euml"] = "\u00eb"; |
|---|
| 238 | _entityReferenceTable["igrave"] = "\u00ec"; |
|---|
| 239 | _entityReferenceTable["iacute"] = "\u00ed"; |
|---|
| 240 | _entityReferenceTable["icirc"] = "\u00ee"; |
|---|
| 241 | _entityReferenceTable["iuml"] = "\u00ef"; |
|---|
| 242 | _entityReferenceTable["eth"] = "\u00f0"; |
|---|
| 243 | _entityReferenceTable["ntilde"] = "\u00f1"; |
|---|
| 244 | _entityReferenceTable["ograve"] = "\u00f2"; |
|---|
| 245 | _entityReferenceTable["oacute"] = "\u00f3"; |
|---|
| 246 | _entityReferenceTable["ocirc"] = "\u00f4"; |
|---|
| 247 | _entityReferenceTable["otilde"] = "\u00f5"; |
|---|
| 248 | _entityReferenceTable["ouml"] = "\u00f6"; |
|---|
| 249 | _entityReferenceTable["divide"] = "\u00f7"; |
|---|
| 250 | _entityReferenceTable["oslash"] = "\u00f8"; |
|---|
| 251 | _entityReferenceTable["ugrave"] = "\u00f9"; |
|---|
| 252 | _entityReferenceTable["uacute"] = "\u00fa"; |
|---|
| 253 | _entityReferenceTable["ucirc"] = "\u00fb"; |
|---|
| 254 | _entityReferenceTable["uuml"] = "\u00fc"; |
|---|
| 255 | _entityReferenceTable["yacute"] = "\u00fd"; |
|---|
| 256 | _entityReferenceTable["thorn"] = "\u00fe"; |
|---|
| 257 | _entityReferenceTable["yuml"] = "\u00ff"; |
|---|
| 258 | _entityReferenceTable["fnof"] = "\u0192"; |
|---|
| 259 | _entityReferenceTable["Alpha"] = "\u0391"; |
|---|
| 260 | _entityReferenceTable["Beta"] = "\u0392"; |
|---|
| 261 | _entityReferenceTable["Gamma"] = "\u0393"; |
|---|
| 262 | _entityReferenceTable["Delta"] = "\u0394"; |
|---|
| 263 | _entityReferenceTable["Epsilon"] = "\u0395"; |
|---|
| 264 | _entityReferenceTable["Zeta"] = "\u0396"; |
|---|
| 265 | _entityReferenceTable["Eta"] = "\u0397"; |
|---|
| 266 | _entityReferenceTable["Theta"] = "\u0398"; |
|---|
| 267 | _entityReferenceTable["Iota"] = "\u0399"; |
|---|
| 268 | _entityReferenceTable["Kappa"] = "\u039a"; |
|---|
| 269 | _entityReferenceTable["Lambda"] = "\u039b"; |
|---|
| 270 | _entityReferenceTable["Mu"] = "\u039c"; |
|---|
| 271 | _entityReferenceTable["Nu"] = "\u039d"; |
|---|
| 272 | _entityReferenceTable["Xi"] = "\u039e"; |
|---|
| 273 | _entityReferenceTable["Omicron"] = "\u039f"; |
|---|
| 274 | _entityReferenceTable["Pi"] = "\u03a0"; |
|---|
| 275 | _entityReferenceTable["Rho"] = "\u03a1"; |
|---|
| 276 | _entityReferenceTable["Sigma"] = "\u03a3"; |
|---|
| 277 | _entityReferenceTable["Tau"] = "\u03a4"; |
|---|
| 278 | _entityReferenceTable["Upsilon"] = "\u03a5"; |
|---|
| 279 | _entityReferenceTable["Phi"] = "\u03a6"; |
|---|
| 280 | _entityReferenceTable["Chi"] = "\u03a7"; |
|---|
| 281 | _entityReferenceTable["Psi"] = "\u03a8"; |
|---|
| 282 | _entityReferenceTable["Omega"] = "\u03a9"; |
|---|
| 283 | _entityReferenceTable["alpha"] = "\u03b1"; |
|---|
| 284 | _entityReferenceTable["beta"] = "\u03b2"; |
|---|
| 285 | _entityReferenceTable["gamma"] = "\u03b3"; |
|---|
| 286 | _entityReferenceTable["delta"] = "\u03b4"; |
|---|
| 287 | _entityReferenceTable["epsilon"] = "\u03b5"; |
|---|
| 288 | _entityReferenceTable["zeta"] = "\u03b6"; |
|---|
| 289 | _entityReferenceTable["eta"] = "\u03b7"; |
|---|
| 290 | _entityReferenceTable["theta"] = "\u03b8"; |
|---|
| 291 | _entityReferenceTable["iota"] = "\u03b9"; |
|---|
| 292 | _entityReferenceTable["kappa"] = "\u03ba"; |
|---|
| 293 | _entityReferenceTable["lambda"] = "\u03bb"; |
|---|
| 294 | _entityReferenceTable["mu"] = "\u03bc"; |
|---|
| 295 | _entityReferenceTable["nu"] = "\u03bd"; |
|---|
| 296 | _entityReferenceTable["xi"] = "\u03be"; |
|---|
| 297 | _entityReferenceTable["omicron"] = "\u03bf"; |
|---|
| 298 | _entityReferenceTable["pi"] = "\u03c0"; |
|---|
| 299 | _entityReferenceTable["rho"] = "\u03c1"; |
|---|
| 300 | _entityReferenceTable["sigmaf"] = "\u03c2"; |
|---|
| 301 | _entityReferenceTable["sigma"] = "\u03c3"; |
|---|
| 302 | _entityReferenceTable["tau"] = "\u03c4"; |
|---|
| 303 | _entityReferenceTable["upsilon"] = "\u03c5"; |
|---|
| 304 | _entityReferenceTable["phi"] = "\u03c6"; |
|---|
| 305 | _entityReferenceTable["chi"] = "\u03c7"; |
|---|
| 306 | _entityReferenceTable["psi"] = "\u03c8"; |
|---|
| 307 | _entityReferenceTable["omega"] = "\u03c9"; |
|---|
| 308 | _entityReferenceTable["thetasym"] = "\u03d1"; |
|---|
| 309 | _entityReferenceTable["upsih"] = "\u03d2"; |
|---|
| 310 | _entityReferenceTable["piv"] = "\u03d6"; |
|---|
| 311 | _entityReferenceTable["bull"] = "\u2022"; |
|---|
| 312 | _entityReferenceTable["hellip"] = "\u2026"; |
|---|
| 313 | _entityReferenceTable["prime"] = "\u2032"; |
|---|
| 314 | _entityReferenceTable["Prime"] = "\u2033"; |
|---|
| 315 | _entityReferenceTable["oline"] = "\u203e"; |
|---|
| 316 | _entityReferenceTable["frasl"] = "\u2044"; |
|---|
| 317 | _entityReferenceTable["weierp"] = "\u2118"; |
|---|
| 318 | _entityReferenceTable["image"] = "\u2111"; |
|---|
| 319 | _entityReferenceTable["real"] = "\u211c"; |
|---|
| 320 | //EntityReferenceTable["trade"] = "\u2122"; |
|---|
| 321 | _entityReferenceTable["trade"] = "TM"; |
|---|
| 322 | _entityReferenceTable["alefsym"] = "\u2135"; |
|---|
| 323 | _entityReferenceTable["larr"] = "\u2190"; |
|---|
| 324 | _entityReferenceTable["uarr"] = "\u2191"; |
|---|
| 325 | _entityReferenceTable["rarr"] = "\u2192"; |
|---|
| 326 | _entityReferenceTable["darr"] = "\u2193"; |
|---|
| 327 | _entityReferenceTable["harr"] = "\u2194"; |
|---|
| 328 | _entityReferenceTable["crarr"] = "\u21b5"; |
|---|
| 329 | _entityReferenceTable["lArr"] = "\u21d0"; |
|---|
| 330 | _entityReferenceTable["uArr"] = "\u21d1"; |
|---|
| 331 | _entityReferenceTable["rArr"] = "\u21d2"; |
|---|
| 332 | _entityReferenceTable["dArr"] = "\u21d3"; |
|---|
| 333 | _entityReferenceTable["hArr"] = "\u21d4"; |
|---|
| 334 | _entityReferenceTable["forall"] = "\u2200"; |
|---|
| 335 | _entityReferenceTable["part"] = "\u2202"; |
|---|
| 336 | _entityReferenceTable["exist"] = "\u2203"; |
|---|
| 337 | _entityReferenceTable["empty"] = "\u2205"; |
|---|
| 338 | _entityReferenceTable["nabla"] = "\u2207"; |
|---|
| 339 | _entityReferenceTable["isin"] = "\u2208"; |
|---|
| 340 | _entityReferenceTable["notin"] = "\u2209"; |
|---|
| 341 | _entityReferenceTable["ni"] = "\u220b"; |
|---|
| 342 | _entityReferenceTable["prod"] = "\u220f"; |
|---|
| 343 | _entityReferenceTable["sum"] = "\u2211"; |
|---|
| 344 | _entityReferenceTable["minus"] = "\u2212"; |
|---|
| 345 | _entityReferenceTable["lowast"] = "\u2217"; |
|---|
| 346 | _entityReferenceTable["radic"] = "\u221a"; |
|---|
| 347 | _entityReferenceTable["prop"] = "\u221d"; |
|---|
| 348 | _entityReferenceTable["infin"] = "\u221e"; |
|---|
| 349 | _entityReferenceTable["ang"] = "\u2220"; |
|---|
| 350 | _entityReferenceTable["and"] = "\u2227"; |
|---|
| 351 | _entityReferenceTable["or"] = "\u2228"; |
|---|
| 352 | _entityReferenceTable["cap"] = "\u2229"; |
|---|
| 353 | _entityReferenceTable["cup"] = "\u222a"; |
|---|
| 354 | _entityReferenceTable["int"] = "\u222b"; |
|---|
| 355 | _entityReferenceTable["there4"] = "\u2234"; |
|---|
| 356 | _entityReferenceTable["sim"] = "\u223c"; |
|---|
| 357 | _entityReferenceTable["cong"] = "\u2245"; |
|---|
| 358 | _entityReferenceTable["asymp"] = "\u2248"; |
|---|
| 359 | _entityReferenceTable["ne"] = "\u2260"; |
|---|
| 360 | _entityReferenceTable["equiv"] = "\u2261"; |
|---|
| 361 | _entityReferenceTable["le"] = "\u2264"; |
|---|
| 362 | _entityReferenceTable["ge"] = "\u2265"; |
|---|
| 363 | _entityReferenceTable["sub"] = "\u2282"; |
|---|
| 364 | _entityReferenceTable["sup"] = "\u2283"; |
|---|
| 365 | _entityReferenceTable["nsub"] = "\u2284"; |
|---|
| 366 | _entityReferenceTable["sube"] = "\u2286"; |
|---|
| 367 | _entityReferenceTable["supe"] = "\u2287"; |
|---|
| 368 | _entityReferenceTable["oplus"] = "\u2295"; |
|---|
| 369 | _entityReferenceTable["otimes"] = "\u2297"; |
|---|
| 370 | _entityReferenceTable["perp"] = "\u22a5"; |
|---|
| 371 | _entityReferenceTable["sdot"] = "\u22c5"; |
|---|
| 372 | _entityReferenceTable["lceil"] = "\u2308"; |
|---|
| 373 | _entityReferenceTable["rceil"] = "\u2309"; |
|---|
| 374 | _entityReferenceTable["lfloor"] = "\u230a"; |
|---|
| 375 | _entityReferenceTable["rfloor"] = "\u230b"; |
|---|
| 376 | _entityReferenceTable["lang"] = "\u2329"; |
|---|
| 377 | _entityReferenceTable["rang"] = "\u232a"; |
|---|
| 378 | _entityReferenceTable["loz"] = "\u25ca"; |
|---|
| 379 | _entityReferenceTable["spades"] = "\u2660"; |
|---|
| 380 | _entityReferenceTable["clubs"] = "\u2663"; |
|---|
| 381 | _entityReferenceTable["hearts"] = "\u2665"; |
|---|
| 382 | _entityReferenceTable["diams"] = "\u2666"; |
|---|
| 383 | _entityReferenceTable["quot"] = "\u0022"; |
|---|
| 384 | _entityReferenceTable["amp"] = "\u0026"; |
|---|
| 385 | _entityReferenceTable["lt"] = "\u003c"; |
|---|
| 386 | _entityReferenceTable["gt"] = "\u003e"; |
|---|
| 387 | _entityReferenceTable["OElig"] = "\u0152"; |
|---|
| 388 | _entityReferenceTable["oelig"] = "\u0153"; |
|---|
| 389 | _entityReferenceTable["Scaron"] = "\u0160"; |
|---|
| 390 | _entityReferenceTable["scaron"] = "\u0161"; |
|---|
| 391 | _entityReferenceTable["Yuml"] = "\u0178"; |
|---|
| 392 | _entityReferenceTable["circ"] = "\u02c6"; |
|---|
| 393 | _entityReferenceTable["tilde"] = "\u02dc"; |
|---|
| 394 | _entityReferenceTable["ensp"] = "\u2002"; |
|---|
| 395 | _entityReferenceTable["emsp"] = "\u2003"; |
|---|
| 396 | _entityReferenceTable["thinsp"] = "\u2009"; |
|---|
| 397 | _entityReferenceTable["zwnj"] = "\u200c"; |
|---|
| 398 | _entityReferenceTable["zwj"] = "\u200d"; |
|---|
| 399 | _entityReferenceTable["lrm"] = "\u200e"; |
|---|
| 400 | _entityReferenceTable["rlm"] = "\u200f"; |
|---|
| 401 | _entityReferenceTable["ndash"] = "\u2013"; |
|---|
| 402 | _entityReferenceTable["mdash"] = "\u2014"; |
|---|
| 403 | _entityReferenceTable["lsquo"] = "\u2018"; |
|---|
| 404 | _entityReferenceTable["rsquo"] = "\u2019"; |
|---|
| 405 | _entityReferenceTable["sbquo"] = "\u201a"; |
|---|
| 406 | _entityReferenceTable["ldquo"] = "\u201c"; |
|---|
| 407 | _entityReferenceTable["rdquo"] = "\u201d"; |
|---|
| 408 | _entityReferenceTable["bdquo"] = "\u201e"; |
|---|
| 409 | _entityReferenceTable["dagger"] = "\u2020"; |
|---|
| 410 | _entityReferenceTable["Dagger"] = "\u2021"; |
|---|
| 411 | _entityReferenceTable["permil"] = "\u2030"; |
|---|
| 412 | _entityReferenceTable["lsaquo"] = "\u2039"; |
|---|
| 413 | _entityReferenceTable["rsaquo"] = "\u203a"; |
|---|
| 414 | _entityReferenceTable["euro"] = "\u20ac"; |
|---|
| 415 | } |
|---|
| 416 | private static String ReplaceMatchEvaluator(Match m) |
|---|
| 417 | { |
|---|
| 418 | if (m.Groups[1].Value[0] == '#') |
|---|
| 419 | { |
|---|
| 420 | // ���l�Q�� |
|---|
| 421 | try |
|---|
| 422 | { |
|---|
| 423 | Char c; |
|---|
| 424 | if (m.Groups["dig"].Value[0] == 'x') |
|---|
| 425 | { |
|---|
| 426 | c = Convert.ToChar(Int32.Parse(m.Groups["dig"].Value.Substring(1), System.Globalization.NumberStyles.HexNumber)); |
|---|
| 427 | } |
|---|
| 428 | else |
|---|
| 429 | { |
|---|
| 430 | c = Convert.ToChar(Int32.Parse(m.Groups["dig"].Value)); |
|---|
| 431 | } |
|---|
| 432 | return c.ToString(); |
|---|
| 433 | } |
|---|
| 434 | catch (OverflowException) {} |
|---|
| 435 | catch (FormatException) {} |
|---|
| 436 | |
|---|
| 437 | return "?"; |
|---|
| 438 | } |
|---|
| 439 | else |
|---|
| 440 | { |
|---|
| 441 | // ������̎Q�� |
|---|
| 442 | if (_entityReferenceTable.ContainsKey(m.Groups["char"].Value)) |
|---|
| 443 | { |
|---|
| 444 | return _entityReferenceTable[m.Groups["char"].Value]; |
|---|
| 445 | } |
|---|
| 446 | else |
|---|
| 447 | { |
|---|
| 448 | return "&" + m.Groups["char"].Value+";"; |
|---|
| 449 | } |
|---|
| 450 | } |
|---|
| 451 | } |
|---|
| 452 | } |
|---|
| 453 | } |
|---|