001package com.thed.zblast.parser.util; 002 003import java.io.PrintStream; 004import java.io.UnsupportedEncodingException; 005import java.net.URLEncoder; 006import java.util.Vector; 007import java.util.regex.Matcher; 008import java.util.regex.Pattern; 009 010public class ZTextUtils 011 implements ZConstantsResults 012{ 013 public static void printUtf8String(String paramString) 014 { 015 try 016 { 017 PrintStream localPrintStream = new PrintStream(System.err, true, "UTF-8"); 018 localPrintStream.println(paramString); 019 } 020 catch (UnsupportedEncodingException localUnsupportedEncodingException) 021 { 022 } 023 } 024 025 public static String right(String paramString, int paramInt) 026 { 027 if (paramString.length() > paramInt) 028 return paramString.substring(paramString.length() - paramInt, paramString.length()); 029 return paramString; 030 } 031 032 public static String left(String paramString, int paramInt) 033 { 034 if (paramString.length() > paramInt) 035 return paramString.substring(0, paramInt); 036 return paramString; 037 } 038 039 public static String leftWithIndicators(String paramString, int paramInt) 040 { 041 if (paramString.length() > paramInt) 042 return paramString.substring(0, paramInt) + "..."; 043 return paramString; 044 } 045 046 public static String middle(String paramString, int paramInt1, int paramInt2) 047 { 048 return paramString.substring(paramInt1, paramInt1 + paramInt2); 049 } 050 051 public static String middleObjectName(String paramString, int paramInt) 052 { 053 if (paramString.length() <= paramInt) 054 return paramString; 055 int i = paramString.indexOf("]"); 056 int j = i + 1; 057 String str1 = left(paramString, j); 058 if (i < 0) 059 { 060 i = 0; 061 j = 0; 062 } 063 int k = paramInt - j - 3; 064 String str2 = right(paramString, k); 065 return str1 + "..." + str2; 066 } 067 068 public static String objectNameOnSeveralLines(String paramString, int paramInt) 069 { 070 if (paramString.length() <= paramInt) 071 return paramString; 072 StringBuffer localStringBuffer = new StringBuffer(); 073 int i = paramString.length() - 1; 074 int j = 0; 075 while (j < paramString.length()) 076 { 077 int k = 0; 078 int m = Math.min(j + paramInt, i + 1); 079 int n = -1; 080 if (m < i) 081 for (int i1 = m; i1 > j; i1--) 082 { 083 if (paramString.charAt(i1) != ' ') 084 continue; 085 k = 1; 086 n = i1; 087 break; 088 } 089 if (n == -1) 090 n = m; 091 localStringBuffer.append(paramString.substring(j, n)); 092 if (n < i) 093 localStringBuffer.append("<br/>"); 094 j = n; 095 if (k != 0) 096 j++; 097 } 098 return localStringBuffer.toString(); 099 } 100 101 public static String sentenceToLabel(String paramString, int paramInt) 102 { 103 return leftWithIndicators(replaceTabLfAndCrWithSpace(paramString.trim()), paramInt); 104 } 105 106 public static byte[] right(byte[] paramArrayOfByte, int paramInt) 107 { 108 byte[] arrayOfByte; 109 try 110 { 111 arrayOfByte = new byte[paramInt]; 112 int i = paramArrayOfByte.length; 113 for (int j = 0; j < paramInt; j++) 114 arrayOfByte[j] = paramArrayOfByte[(i - paramInt + j)]; 115 } 116 catch (Exception localException) 117 { 118 return null; 119 } 120 return arrayOfByte; 121 } 122 123 public static String searchInString(String paramString1, String paramString2, String paramString3, int paramInt, int[] paramArrayOfInt) 124 { 125 String str = ""; 126 int i = paramString1.indexOf(paramString2, paramInt); 127 if (i >= 0) 128 { 129 str = paramString1.substring(i + paramString2.length()); 130 int j = str.indexOf(paramString3); 131 if (j >= 0) 132 { 133 str = str.substring(0, j); 134 paramArrayOfInt[0] = (i + j); 135 return str; 136 } 137 paramArrayOfInt[0] = 0; 138 return null; 139 } 140 paramArrayOfInt[0] = 0; 141 return null; 142 } 143 144 public static Vector<String> searchInString(String paramString1, String paramString2, String paramString3) 145 { 146 int i = 0; 147 int[] arrayOfInt = { 0 }; 148 Vector localVector = new Vector(); 149 while (true) 150 { 151 String str = searchInString(paramString1, paramString2, paramString3, i, arrayOfInt); 152 if ((str == null) || (arrayOfInt[0] <= 0)) 153 break; 154 localVector.add(str); 155 i = arrayOfInt[0]; 156 arrayOfInt[0] = 0; 157 } 158 return localVector; 159 } 160 161 public static String searchFirstInString(String paramString1, String paramString2, String paramString3) 162 { 163 Vector localVector = searchInString(paramString1, paramString2, paramString3); 164 if (localVector.size() > 0) 165 return (String)localVector.elementAt(0); 166 return null; 167 } 168 169 public static int indexOfRegex(String paramString1, String paramString2) 170 { 171 Pattern localPattern = Pattern.compile(paramString2); 172 Matcher localMatcher = localPattern.matcher(paramString1); 173 if (localMatcher.find()) 174 return localMatcher.start(); 175 return -1; 176 } 177 178 public static String encodeAttributeName(String paramString) 179 { 180 String str = paramString.trim().replaceAll("[^A-Za-z0-9_]", ""); 181 return escapeAttributeString(str); 182 } 183 184 public static String escapeFileName(String paramString) 185 { 186 if (paramString == null) 187 return ""; 188 String str = paramString; 189 str = str.replaceAll("\\x20", "_"); 190 str = str.replaceAll("\\x5c", "-"); 191 str = str.replaceAll("\\x2f", "-"); 192 str = str.replaceAll("\\x3f", "-"); 193 str = str.replaceAll("\\x25", "-"); 194 str = str.replaceAll("\\x2a", "-"); 195 str = str.replaceAll("\\x3a", "-"); 196 str = str.replaceAll("\\x7c", "-"); 197 str = str.replaceAll("\\x22", "-"); 198 str = str.replaceAll("\\x3c", "-"); 199 str = str.replaceAll("\\x3e", "-"); 200 str = str.replaceAll("\\x2e", "-"); 201 return removeInvisibleCharacters(str); 202 } 203 204 public static String escapeTextString(String paramString) 205 { 206 if (paramString == null) 207 return ""; 208 String str = paramString; 209 str = str.replaceAll("\\\\", "\\\\\\\\"); 210 return removeInvisibleCharacters(str); 211 } 212 213 public static String escapeAttributeString(String paramString) 214 { 215 if (paramString == null) 216 return ""; 217 String str = paramString; 218 str = str.replaceAll("&", "&"); 219 str = str.replaceAll("\"", """); 220 str = str.replaceAll("'", "'"); 221 str = str.replaceAll(">", ">"); 222 str = str.replaceAll("<", "<"); 223 str = str.replaceAll("\n", "
"); 224 str = str.replaceAll("\r", "
"); 225 str = str.replaceAll("\t", "	"); 226 return removeInvisibleCharacters(str); 227 } 228 229 public static String escapeJsonValue(String paramString) 230 { 231 if (paramString == null) 232 return ""; 233 String str = paramString; 234 str = str.replaceAll("\"", "\\\\\""); 235 return removeInvisibleCharacters(str); 236 } 237 238 public static String unescapeAttributeString(String paramString) 239 { 240 if (paramString == null) 241 return ""; 242 String str = paramString; 243 str = str.replaceAll(""", "\""); 244 str = str.replaceAll("'", "'"); 245 str = str.replaceAll(">", ">"); 246 str = str.replaceAll("<", "<"); 247 str = str.replaceAll("
", "\n"); 248 str = str.replaceAll("
", "\r"); 249 str = str.replaceAll("	", "\t"); 250 str = str.replaceAll("&", "&"); 251 return str; 252 } 253 254 public static String removeInvisibleCharacters(String paramString) 255 { 256 if (paramString == null) 257 return ""; 258 String str = paramString; 259 str = str.replaceAll("\\x00", ""); 260 str = str.replaceAll("\\x01", ""); 261 str = str.replaceAll("\\x02", ""); 262 str = str.replaceAll("\\x03", ""); 263 str = str.replaceAll("\\x04", ""); 264 str = str.replaceAll("\\x05", ""); 265 str = str.replaceAll("\\x06", ""); 266 str = str.replaceAll("\\x07", ""); 267 str = str.replaceAll("\\x08", ""); 268 str = str.replaceAll("\\x0b", ""); 269 str = str.replaceAll("\\x0c", ""); 270 str = str.replaceAll("\\x0e", ""); 271 str = str.replaceAll("\\x0f", ""); 272 str = str.replaceAll("\\x10", ""); 273 str = str.replaceAll("\\x11", ""); 274 str = str.replaceAll("\\x12", ""); 275 str = str.replaceAll("\\x13", ""); 276 str = str.replaceAll("\\x14", ""); 277 str = str.replaceAll("\\x15", ""); 278 str = str.replaceAll("\\x16", ""); 279 str = str.replaceAll("\\x17", ""); 280 str = str.replaceAll("\\x18", ""); 281 str = str.replaceAll("\\x19", ""); 282 str = str.replaceAll("\\x1a", ""); 283 str = str.replaceAll("\\x1b", ""); 284 str = str.replaceAll("\\x1c", ""); 285 str = str.replaceAll("\\x1d", ""); 286 str = str.replaceAll("\\x1e", ""); 287 str = str.replaceAll("\\x1f", ""); 288 return str; 289 } 290 291 public static String replaceInvisibleCharactersWithSpace(String paramString) 292 { 293 if (paramString == null) 294 return ""; 295 String str = paramString; 296 str = str.replaceAll("\\x00", " "); 297 str = str.replaceAll("\\x01", " "); 298 str = str.replaceAll("\\x02", " "); 299 str = str.replaceAll("\\x03", " "); 300 str = str.replaceAll("\\x04", " "); 301 str = str.replaceAll("\\x05", " "); 302 str = str.replaceAll("\\x06", " "); 303 str = str.replaceAll("\\x07", " "); 304 str = str.replaceAll("\\x08", " "); 305 str = str.replaceAll("\\x0b", " "); 306 str = str.replaceAll("\\x0c", " "); 307 str = str.replaceAll("\\x0e", " "); 308 str = str.replaceAll("\\x0f", " "); 309 str = str.replaceAll("\\x10", " "); 310 str = str.replaceAll("\\x11", " "); 311 str = str.replaceAll("\\x12", " "); 312 str = str.replaceAll("\\x13", " "); 313 str = str.replaceAll("\\x14", " "); 314 str = str.replaceAll("\\x15", " "); 315 str = str.replaceAll("\\x16", " "); 316 str = str.replaceAll("\\x17", " "); 317 str = str.replaceAll("\\x18", " "); 318 str = str.replaceAll("\\x19", " "); 319 str = str.replaceAll("\\x1a", " "); 320 str = str.replaceAll("\\x1b", " "); 321 str = str.replaceAll("\\x1c", " "); 322 str = str.replaceAll("\\x1d", " "); 323 str = str.replaceAll("\\x1e", " "); 324 str = str.replaceAll("\\x1f", " "); 325 return str; 326 } 327 328 public static String replaceTabLfAndCrWithSpace(String paramString) 329 { 330 if (paramString == null) 331 return ""; 332 String str = paramString; 333 str = str.replaceAll("\\x09", " "); 334 str = str.replaceAll("\\x0a", " "); 335 str = str.replaceAll("\\x0d", " "); 336 return str; 337 } 338 339 public static String removeSpace(String paramString) 340 { 341 if (paramString == null) 342 return ""; 343 String str = paramString; 344 str = str.replaceAll("\\x20", ""); 345 return str; 346 } 347 348 public static String removeDuplicateSpaces(String paramString) 349 { 350 if (paramString == null) 351 return ""; 352 String str = paramString; 353 str = str.replaceAll("\\x20{1,}", " "); 354 return str; 355 } 356 357 public static String removeSpacesBetweenPseudoHtmlTags(String paramString) 358 { 359 if (paramString == null) 360 return ""; 361 String str = paramString; 362 str = str.replaceAll("\\] \\[", "\\]\\["); 363 return str; 364 } 365 366 public static String replaceForbiddenCharacters(String paramString) 367 { 368 if (paramString == null) 369 return ""; 370 String str = paramString; 371 str = str.replaceAll("\\x24", "[x24]"); 372 str = str.replaceAll("\\x5c", "[x5c]"); 373 return removeInvisibleCharacters(str); 374 } 375 376 public static String rereplaceForbiddenCharacters(String paramString) 377 { 378 if (paramString == null) 379 return ""; 380 String str = paramString; 381 str = str.replaceAll("\\[x24\\]", "\\$"); 382 str = str.replaceAll("\\[x5c\\]", "\\\\"); 383 return str; 384 } 385 386 public static String escapeStringforRegex(String paramString) 387 { 388 if (paramString == null) 389 return ""; 390 String str = paramString; 391 str = str.replaceAll("\\\\", "\\\\\\\\"); 392 str = str.replaceAll("\\$", "\\\\\\$"); 393 return removeInvisibleCharacters(str); 394 } 395 396 public static String escapeStringForDatabase(String paramString) 397 { 398 if (paramString == null) 399 return ""; 400 String str = paramString; 401 str = str.replaceAll("'", "''"); 402 str = str.replaceAll("\\\\", "\\\\\\\\"); 403 return removeInvisibleCharacters(str); 404 } 405 406 public static String escapeStringForCDATA(String paramString) 407 { 408 if (paramString == null) 409 return ""; 410 String str = paramString; 411 str = str.replaceAll("]]>", "] ] >"); 412 return removeInvisibleCharacters(str); 413 } 414 415 public static String insertParamValues(String paramString, String[] paramArrayOfString, String[][] paramArrayOfString1, int paramInt) 416 { 417 for (int i = 0; i < paramArrayOfString.length; i++) 418 paramString = paramString.replaceAll("%" + escapeStringforRegex(paramArrayOfString[i]) + "%", paramArrayOfString1[paramInt][i]); 419 return paramString; 420 } 421 422 public static String removeLeadingAndEndingSemiColumns(String paramString) 423 { 424 if (paramString != null) 425 { 426 if ((paramString.length() > 0) && (paramString.charAt(0) == ';')) 427 paramString = paramString.substring(1); 428 if ((paramString.length() > 1) && (paramString.charAt(paramString.length() - 1) == ';')) 429 paramString = paramString.substring(0, paramString.length() - 1); 430 } 431 return paramString; 432 } 433 434 public static String escapeURIString(String paramString) 435 { 436 try 437 { 438 return URLEncoder.encode(paramString, "UTF-8"); 439 } 440 catch (UnsupportedEncodingException localUnsupportedEncodingException) 441 { 442 System.err.println("escape URI string failed"); 443 } 444 return paramString; 445 } 446 447 public static String escapeURLString(String paramString) 448 { 449 String str = paramString.replaceAll("\"", "%22"); 450 str = str.replaceAll(" ", "%20"); 451 return str; 452 } 453 454 public static String unDoubleQuote(String paramString) 455 { 456 if (paramString == null) 457 return ""; 458 if ((paramString.charAt(0) == '"') && (paramString.charAt(paramString.length() - 1) == '"')) 459 return paramString.substring(1, paramString.length() - 1); 460 return paramString; 461 } 462 463 public static String extractBodyFromHtml(String paramString) 464 { 465 int i = paramString.indexOf("<body>") + 6; 466 int j = paramString.indexOf("</body>"); 467 return paramString.substring(i, j).trim(); 468 } 469 470 public static String crlfToBR(String paramString) 471 { 472 String str = paramString.replaceAll("\\x20*\\x0A\\x20*", "<br/>"); 473 str = str.replaceAll("\\x20*\\x0D\\x20*", "<br/>"); 474 return str; 475 } 476}