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("&", "&amp;");
219    str = str.replaceAll("\"", "&quot;");
220    str = str.replaceAll("'", "&#039;");
221    str = str.replaceAll(">", "&gt;");
222    str = str.replaceAll("<", "&lt;");
223    str = str.replaceAll("\n", "&#010;");
224    str = str.replaceAll("\r", "&#013;");
225    str = str.replaceAll("\t", "&#009;");
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("&quot;", "\"");
244    str = str.replaceAll("&#039;", "'");
245    str = str.replaceAll("&gt;", ">");
246    str = str.replaceAll("&lt;", "<");
247    str = str.replaceAll("&#010;", "\n");
248    str = str.replaceAll("&#013;", "\r");
249    str = str.replaceAll("&#009;", "\t");
250    str = str.replaceAll("&amp;", "&");
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}