隨筆-200  評論-148  文章-15  trackbacks-0

          package com.chinajavaworld.util;
          ?
          import java.io.UnsupportedEncodingException;
          import java.security.MessageDigest;
          import java.security.NoSuchAlgorithmException;
          import java.text.BreakIterator;
          import java.util.*;
          import java.util.regex.Matcher;
          import java.util.regex.Pattern;
          import java.io.File;
          ?
          public class StringUtils
          {
          ? private final static String BR_TAG = "<BR>";
          ?
          ??? private StringUtils()
          ??? {
          ??? }
          ?
          ??? /**
          ???? * This method takes a string which may contain newline characters
          ???? * '\n' which it converts to html newline tags.
          ???? *
          ???? * @param input The text to be converted.
          ???? * @return The input string with the newline character '\n' replaced
          ???? * with <br>.
          ???? */
          ??? public static final String convertNewlines(String input) {
          ????? return replace(replace(input, "\r\n", BR_TAG), "\n", BR_TAG);
          ??? }
          ?
          ??? public static final String backConvertNewlines(String input) {
          ????? return replaceIgnoreCase(input, BR_TAG, "\n");
          ??? }
          ?
          ?
          ??? public static final String replace(String string, String oldString, String newString)
          ??? {
          ??????? if(string == null)
          ??????????? return null;
          ??????? if(newString == null)
          ??????????? return string;
          ??????? int i = 0;
          ??????? if((i = string.indexOf(oldString, i)) >= 0)
          ??????? {
          ??????????? char string2[] = string.toCharArray();
          ??????????? char newString2[] = newString.toCharArray();
          ??????????? int oLength = oldString.length();
          ??????????? StringBuffer buf = new StringBuffer(string2.length);
          ??????????? buf.append(string2, 0, i).append(newString2);
          ??????????? i += oLength;
          ??????????? int j;
          ??????????? for(j = i; (i = string.indexOf(oldString, i)) > 0; j = i)
          ??????????? {
          ??????????????? buf.append(string2, j, i - j).append(newString2);
          ??????????????? i += oLength;
          ??????????? }
          ?
          ??????????? buf.append(string2, j, string2.length - j);
          ??????????? return buf.toString();
          ??????? } else
          ??????? {
          ??????????? return string;
          ??????? }
          ??? }
          ?
          ??? public static final String replaceIgnoreCase(String line, String oldString, String newString)
          ??? {
          ??????? if(line == null)
          ??????????? return null;
          ??????? String lcLine = line.toLowerCase();
          ??????? String lcOldString = oldString.toLowerCase();
          ??????? int i = 0;
          ??????? if((i = lcLine.indexOf(lcOldString, i)) >= 0)
          ??????? {
          ??????????? char line2[] = line.toCharArray();
          ??????????? char newString2[] = newString.toCharArray();
          ??????????? int oLength = oldString.length();
          ??????????? StringBuffer buf = new StringBuffer(line2.length);
          ??????????? buf.append(line2, 0, i).append(newString2);
          ??????????? i += oLength;
          ??????????? int j;
          ??????????? for(j = i; (i = lcLine.indexOf(lcOldString, i)) > 0; j = i)
          ??????????? {
          ??????????????? buf.append(line2, j, i - j).append(newString2);
          ??????????????? i += oLength;
          ??????????? }
          ?
          ??????????? buf.append(line2, j, line2.length - j);
          ??????????? return buf.toString();
          ??????? } else
          ??????? {
          ??????????? return line;
          ??????? }
          ??? }
          ?
          ??? public static final String replaceIgnoreCase(String line, String oldString, String newString, int count[])
          ??? {
          ??????? if(line == null)
          ??????????? return null;
          ??????? String lcLine = line.toLowerCase();
          ??????? String lcOldString = oldString.toLowerCase();
          ??????? int i = 0;
          ??????? if((i = lcLine.indexOf(lcOldString, i)) >= 0)
          ??????? {
          ??????????? int counter = 1;
          ??????????? char line2[] = line.toCharArray();
          ??????????? char newString2[] = newString.toCharArray();
          ??????????? int oLength = oldString.length();
          ??????????? StringBuffer buf = new StringBuffer(line2.length);
          ??????????? buf.append(line2, 0, i).append(newString2);
          ??????????? i += oLength;
          ??????????? int j;
          ??????????? for(j = i; (i = lcLine.indexOf(lcOldString, i)) > 0; j = i)
          ??????????? {
          ??????????????? counter++;
          ??????????????? buf.append(line2, j, i - j).append(newString2);
          ??????????????? i += oLength;
          ??????????? }
          ?
          ??????????? buf.append(line2, j, line2.length - j);
          ??????????? count[0] = counter;
          ??????????? return buf.toString();
          ??????? } else
          ??????? {
          ??????????? return line;
          ??????? }
          ??? }
          ?
          ??? public static final String replace(String line, String oldString, String newString, int count[])
          ??? {
          ??????? if(line == null)
          ??????????? return null;
          ??????? int i = 0;
          ??????? if((i = line.indexOf(oldString, i)) >= 0)
          ??????? {
          ??????????? int counter = 1;
          ??????????? char line2[] = line.toCharArray();
          ??????????? char newString2[] = newString.toCharArray();
          ??????????? int oLength = oldString.length();
          ??????????? StringBuffer buf = new StringBuffer(line2.length);
          ??????????? buf.append(line2, 0, i).append(newString2);
          ??????????? i += oLength;
          ??????????? int j;
          ??????????? for(j = i; (i = line.indexOf(oldString, i)) > 0; j = i)
          ??????????? {
          ??????????????? counter++;
          ??????????????? buf.append(line2, j, i - j).append(newString2);
          ??????????????? i += oLength;
          ??????????? }
          ?
          ??????????? buf.append(line2, j, line2.length - j);
          ??????????? count[0] = counter;
          ??????????? return buf.toString();
          ??????? } else
          ??????? {
          ??????????? return line;
          ??????? }
          ??? }
          ?
          ??? public static final boolean hasBadwordsIgnoreCase(String line, String oldString)
          ??? {
          ??????? if(line == null)
          ??????????? return false;
          ??????? String lcLine = line.toLowerCase();
          ??????? String lcOldString = oldString.toLowerCase();
          ??????? int i = 0;
          ??????? if((i = lcLine.indexOf(lcOldString, i)) >= 0)
          ??????? {
          ??????????? return true;
          ??????? } else
          ??????? {
          ??????????? return false;
          ??????? }
          ??? }
          ?
          ??? public static final String stripTags(String in)
          ??? {
          ??????? if(in == null)
          ??????????? return null;
          ??????? else
          ??????????? return stripTags(in, false);
          ??? }
          ?
          ??? public static final String stripTags(String in, boolean stripBRTag)
          ??? {
          ??????? if(in == null)
          ??????????? return null;
          ??????? int i = 0;
          ??????? int last = 0;
          ??????? char input[] = in.toCharArray();
          ??????? int len = input.length;
          ??????? StringBuffer out = new StringBuffer((int)((double)len * 1.3D));
          ??????? for(; i < len; i++)
          ??????? {
          ??????????? char ch = input[i];
          ??????????? if(ch > '>')
          ??????????????? continue;
          ??????????? if(ch == '<')
          ??????????? {
          ??????????????? if(!stripBRTag && i + 3 < len && input[i + 1] == 'b' && input[i + 2] == 'r' && input[i + 3] == '>')
          ??????????????? {
          ??????????????????? i += 3;
          ??????????????????? continue;
          ??????????????? }
          ??????????????? if(i > last)
          ??????????????? {
          ??????????????????? if(last > 0)
          ??????????????????????? out.append(" ");
          ??????????????????? out.append(input, last, i - last);
          ??????????????? }
          ??????????????? last = i + 1;
          ??????????????? continue;
          ??????????? }
          ??????????? if(ch == '>')
          ??????????????? last = i + 1;
          ??????? }
          ?
          ??????? if(last == 0)
          ??????????? return in;
          ??????? if(i > last)
          ??????????? out.append(input, last, i - last);
          ??????? return out.toString();
          ??? }
          ?
          ??? public static final String escapeHTMLTags(String in)
          ??? {
          ??????? if(in == null)
          ??????????? return null;
          ??????? int i = 0;
          ??????? int last = 0;
          ??????? char input[] = in.toCharArray();
          ??????? int len = input.length;
          ??????? StringBuffer out = new StringBuffer((int)((double)len * 1.3D));
          ??????? for(; i < len; i++)
          ??????? {
          ??????????? char ch = input[i];
          ??????????? if(ch > '>')
          ??????????????? continue;
          ??????????? if(ch == '<')
          ??????????? {
          ??????????????? if(i > last)
          ??????????????????? out.append(input, last, i - last);
          ??????????????? last = i + 1;
          ??????????????? out.append(LT_ENCODE);
          ??????????????? continue;
          ??????????? }
          ??????????? if(ch == '>')
          ??????????? {
          ??????????????? if(i > last)
          ??????????????????? out.append(input, last, i - last);
          ??????????????? last = i + 1;
          ??????????????? out.append(GT_ENCODE);
          ??????????????? continue;
          ??????????? }
          ??????????? if(ch != '"')
          ??????????????? continue;
          ??????????? if(i > last)
          ??????????????? out.append(input, last, i - last);
          ??????????? last = i + 1;
          ??????????? out.append(QUOTE_ENCODE);
          ??????? }
          ?
          ??????? if(last == 0)
          ??????????? return in;
          ??????? if(i > last)
          ??????????? out.append(input, last, i - last);
          ??????? return out.toString();
          ??? }
          ?
          ??? public static final synchronized String hash(String data)
          ??? {
          ??????? if(digest == null)
          ??????????? try
          ??????????? {
          ??????????????? digest = MessageDigest.getInstance("MD5");
          ??????????? }
          ??????????? catch(NoSuchAlgorithmException nsae)
          ??????????? {
          ??????????????? //Log.error(e);
          ??????????? }
          ??????? try
          ??????? {
          ??????????? digest.update(data.getBytes("utf-8"));
          ??????? }
          ??????? catch(UnsupportedEncodingException e)
          ??????? {
          ??????????? //Log.error(e);
          ??????? }
          ??????? return encodeHex(digest.digest());
          ??? }
          ?
          ??? public static final String encodeHex(byte bytes[])
          ??? {
          ??????? StringBuffer buf = new StringBuffer(bytes.length * 2);
          ??????? for(int i = 0; i < bytes.length; i++)
          ??????? {
          ??????????? if((bytes[i] & 0xff) < 16)
          ??????????????? buf.append("0");
          ??????????? buf.append(Long.toString(bytes[i] & 0xff, 16));
          ??????? }
          ?
          ??????? return buf.toString();
          ??? }
          ?
          ??? public static final byte[] decodeHex(String hex)
          ??? {
          ??????? char chars[] = hex.toCharArray();
          ??????? byte bytes[] = new byte[chars.length / 2];
          ??????? int byteCount = 0;
          ??????? for(int i = 0; i < chars.length; i += 2)
          ??????? {
          ??????????? int newByte = 0;
          ??????????? newByte |= hexCharToByte(chars[i]);
          ??????????? newByte <<= 4;
          ??????????? newByte |= hexCharToByte(chars[i + 1]);
          ??????????? bytes[byteCount] = (byte)newByte;
          ??????????? byteCount++;
          ??????? }
          ?
          ??????? return bytes;
          ??? }
          ?
          ??? private static final byte hexCharToByte(char ch)
          ??? {
          ??????? switch(ch)
          ??????? {
          ??????? case 48: // '0'
          ??????????? return 0;
          ?
          ??????? case 49: // '1'
          ??????????? return 1;
          ?
          ??????? case 50: // '2'
          ??????????? return 2;
          ?
          ??????? case 51: // '3'
          ??????????? return 3;
          ?
          ??????? case 52: // '4'
          ??????????? return 4;
          ?
          ??????? case 53: // '5'
          ??????????? return 5;
          ?
          ??????? case 54: // '6'
          ??????????? return 6;
          ?
          ??????? case 55: // '7'
          ??????????? return 7;
          ?
          ??????? case 56: // '8'
          ??????????? return 8;
          ?
          ??????? case 57: // '9'
          ??????????? return 9;
          ?
          ??????? case 97: // 'a'
          ??????????? return 10;
          ?
          ??????? case 98: // 'b'
          ??????????? return 11;
          ?
          ??????? case 99: // 'c'
          ??????????? return 12;
          ?
          ??????? case 100: // 'd'
          ??????????? return 13;
          ?
          ??????? case 101: // 'e'
          ??????????? return 14;
          ?
          ??????? case 102: // 'f'
          ??????????? return 15;
          ?
          ??????? case 58: // ':'
          ??????? case 59: // ';'
          ??????? case 60: // '<'
          ??????? case 61: // '='
          ??????? case 62: // '>'
          ??????? case 63: // '?'
          ??????? case 64: // '@'
          ??????? case 65: // 'A'
          ??????? case 66: // 'B'
          ??????? case 67: // 'C'
          ??????? case 68: // 'D'
          ??????? case 69: // 'E'
          ??????? case 70: // 'F'
          ??????? case 71: // 'G'
          ??????? case 72: // 'H'
          ??????? case 73: // 'I'
          ??????? case 74: // 'J'
          ??????? case 75: // 'K'
          ??????? case 76: // 'L'
          ??????? case 77: // 'M'
          ??????? case 78: // 'N'
          ??????? case 79: // 'O'
          ??????? case 80: // 'P'
          ??????? case 81: // 'Q'
          ??????? case 82: // 'R'
          ??????? case 83: // 'S'
          ??????? case 84: // 'T'
          ??????? case 85: // 'U'
          ??????? case 86: // 'V'
          ??????? case 87: // 'W'
          ??????? case 88: // 'X'
          ??????? case 89: // 'Y'
          ??????? case 90: // 'Z'
          ??????? case 91: // '['
          ??????? case 92: // '\\'
          ??????? case 93: // ']'
          ??????? case 94: // '^'
          ??????? case 95: // '_'
          ??????? case 96: // '`'
          ??????? default:
          ??????????? return 0;
          ??????? }
          ??? }
          ?
          ??? public static String encodeBase64(String data)
          ??? {
          ??????? byte bytes[] = null;
          ??????? try
          ??????? {
          ??????????? bytes = data.getBytes("UTF-8");
          ??????? }
          ??????? catch(UnsupportedEncodingException uee)
          ??????? {
          ??????????? //Log.error(uee);
          ??????? }
          ??????? return encodeBase64(bytes);
          ??? }
          ?
          ??? public static String decodeBase64(String data)
          ??? {
          ??????? byte[] bytes = null;
          ??????? try {
          ????????? bytes = data.getBytes("UTF-8");
          ????????? return new String(decodeBase64(bytes), "UTF-8");
          ??????? }
          ??????? catch (UnsupportedEncodingException ex) {
          ??????? }
          ??????? return "";
          ??? }
          ?
          ??? public static String encodeBase64(byte data[])
          ??? {
          ??????? boolean lineSep = false;
          ??????? int sLen = data == null ? 0 : data.length;
          ??????? if(sLen == 0)
          ??????????? return new String("");
          ??????? int eLen = (sLen / 3) * 3;
          ??????? int cCnt = (sLen - 1) / 3 + 1 << 2;
          ??????? int dLen = cCnt + (lineSep ? (cCnt - 1) / 76 << 1 : 0);
          ??????? char dArr[] = new char[dLen];
          ??????? int s = 0;
          ??????? int d = 0;
          ??????? int cc = 0;
          ??????? do
          ??????? {
          ??????????? if(s >= eLen)
          ??????????????? break;
          ??????????? int i = (data[s++] & 0xff) << 16 | (data[s++] & 0xff) << 8 | data[s++] & 0xff;
          ??????????? dArr[d++] = CA[i >>> 18 & 0x3f];
          ??????????? dArr[d++] = CA[i >>> 12 & 0x3f];
          ??????????? dArr[d++] = CA[i >>> 6 & 0x3f];
          ??????????? dArr[d++] = CA[i & 0x3f];
          ??????????? if(lineSep && ++cc == 19 && d < dLen - 2)
          ??????????? {
          ??????????????? dArr[d++] = '\r';
          ??????????????? dArr[d++] = '\n';
          ??????????????? cc = 0;
          ??????????? }
          ??????? } while(true);
          ??????? int left = sLen - eLen;
          ??????? if(left > 0)
          ??????? {
          ??????????? int i = (data[eLen] & 0xff) << 10 | (left != 2 ? 0 : (data[sLen - 1] & 0xff) << 2);
          ??????????? dArr[dLen - 4] = CA[i >> 12];
          ??????????? dArr[dLen - 3] = CA[i >>> 6 & 0x3f];
          ??????????? dArr[dLen - 2] = left != 2 ? '=' : CA[i & 0x3f];
          ??????????? dArr[dLen - 1] = '=';
          ??????? }
          ??????? return new String(dArr);
          ??? }
          ?
          ??? public static final byte[] decodeBase64(byte bytes[])
          ??? {
          ??????? int sLen = bytes.length;
          ??????? int sepCnt = 0;
          ??????? for(int i = 0; i < sLen; i++)
          ??????????? if(IA[bytes[i] & 0xff] < 0)
          ??????????????? sepCnt++;
          ?
          ??????? if((sLen - sepCnt) % 4 != 0)
          ??????????? return null;
          ??????? int pad = 0;
          ??????? int i = sLen;
          ??????? do
          ??????? {
          ??????????? if(i <= 1 || IA[bytes[--i] & 0xff] > 0)
          ??????????????? break;
          ??????????? if(bytes[i] == 61)
          ??????????????? pad++;
          ??????? } while(true);
          ??????? int len = ((sLen - sepCnt) * 6 >> 3) - pad;
          ??????? byte dArr[] = new byte[len];
          ??????? int s = 0;
          ??????? int d = 0;
          ??????? do
          ??????? {
          ??????????? if(d >= len)
          ??????????????? break;
          ??????????? i = 0;
          ??????????? for(int j = 0; j < 4; j++)
          ??????????? {
          ??????????????? int c = IA[bytes[s++] & 0xff];
          ??????????????? if(c >= 0)
          ??????????????????? i |= c << 18 - j * 6;
          ??????????????? else
          ??????????????????? j--;
          ??????????? }
          ?
          ??????????? dArr[d++] = (byte)(i >> 16);
          ??????????? if(d < len)
          ??????????? {
          ??????????????? dArr[d++] = (byte)(i >> 8);
          ??????????????? if(d < len)
          ??????????????????? dArr[d++] = (byte)i;
          ??????????? }
          ??????? } while(true);
          ??????? return dArr;
          ??? }
          ?
          ??? public static String URLEncode(String original, String charset)
          ??????? throws UnsupportedEncodingException
          ??? {
          ??????? if(original == null)
          ??????????? return null;
          ??????? byte octets[];
          ??????? try
          ??????? {
          ??????????? octets = original.getBytes(charset);
          ??????? }
          ??????? catch(UnsupportedEncodingException error)
          ??????? {
          ??????????? throw new UnsupportedEncodingException();
          ??????? }
          ??????? StringBuffer buf = new StringBuffer(octets.length);
          ??????? for(int i = 0; i < octets.length; i++)
          ??????? {
          ??????????? char c = (char)octets[i];
          ??????????? if(allowed_query.get(c))
          ??????????? {
          ??????????????? buf.append(c);
          ??????????? } else
          ??????????? {
          ??????????????? buf.append('%');
          ??????????????? byte b = octets[i];
          ??????????????? char hexadecimal = Character.forDigit(b >> 4 & 0xf, 16);
          ??????????????? buf.append(Character.toUpperCase(hexadecimal));
          ??????????????? hexadecimal = Character.forDigit(b & 0xf, 16);
          ??????????????? buf.append(Character.toUpperCase(hexadecimal));
          ??????????? }
          ??????? }
          ?
          ??????? return buf.toString();
          ??? }
          ?
          ??? public static final String[] toLowerCaseWordArray(String text)
          ??? {
          ??????? if(text == null || text.length() == 0)
          ??????????? return new String[0];
          ??????? ArrayList wordList = new ArrayList();
          ??????? BreakIterator boundary = BreakIterator.getWordInstance();
          ??????? boundary.setText(text);
          ??????? int start = 0;
          ??????? for(int end = boundary.next(); end != -1; end = boundary.next())
          ??????? {
          ??????????? String tmp = text.substring(start, end).trim();
          ??????????? tmp = replace(tmp, "+", "");
          ??????????? tmp = replace(tmp, "/", "");
          ??????????? tmp = replace(tmp, "\\", "");
          ??????????? tmp = replace(tmp, "#", "");
          ??????????? tmp = replace(tmp, "*", "");
          ??????????? tmp = replace(tmp, ")", "");
          ??????????? tmp = replace(tmp, "(", "");
          ??????????? tmp = replace(tmp, "&", "");
          ??????????? if(tmp.length() > 0)
          ??????????????? wordList.add(tmp);
          ??????????? start = end;
          ??????? }
          ?
          ??????? return (String[])wordList.toArray(new String[wordList.size()]);
          ??? }
          ?
          ??? public static final String randomString(int length)
          ??? {
          ??????? if(length < 1)
          ??????????? return null;
          ??????? char randBuffer[] = new char[length];
          ??????? for(int i = 0; i < randBuffer.length; i++)
          ??????????? randBuffer[i] = numbersAndLetters[randGen.nextInt(71)];
          ?
          ??????? return new String(randBuffer);
          ??? }
          ?
          ??? public static final int randomInt(int number)
          ??? {
          ??????? if(number>0)
          ??????????? return randGen.nextInt(number)+1;
          ??????? else
          ??????????? return 1;
          ??? }
          ?
          ??? public static final String chop(String string, int length)
          ??? {
          ??????? if(string == null)
          ??????????? return null;
          ??????? if(length <= 0)
          ??????????? throw new IllegalArgumentException("Length must be > 0");
          ??????? if(string.length() <= length + 2)
          ??????? {
          ??????????? return string;
          ??????? } else
          ??????? {
          ??????????? StringBuffer buf = new StringBuffer(string.substring(0, length));
          ??????????? buf.append("...");
          ??????????? return buf.toString();
          ??????? }
          ??? }
          ?
          ??? public static final String chopAtWord(String string, int length, int minLength)
          ??? {
          ??????? if(length < 2)
          ??????????? throw new IllegalArgumentException("Length specified (" + length + ") must be > 2");
          ??????? if(minLength >= length)
          ??????????? throw new IllegalArgumentException("minLength must be smaller than length");
          ??????? int sLength = string != null ? string.length() : -1;
          ??????? if(sLength < 1)
          ??????????? return string;
          ??????? if(minLength != -1 && sLength < minLength)
          ??????????? return string;
          ??????? if(minLength == -1 && sLength < length)
          ??????????? return string;
          ??????? char charArray[] = string.toCharArray();
          ??????? if(sLength > length)
          ??????? {
          ??????????? sLength = length;
          ??????????? for(int i = 0; i < sLength - 1; i++)
          ??????????? {
          ??????????????? if(charArray[i] == '\r' && charArray[i + 1] == '\n')
          ??????????????????? return string.substring(0, i + 1);
          ??????????????? if(charArray[i] == '\n')
          ??????????????????? return string.substring(0, i);
          ??????????? }
          ?
          ??????????? if(charArray[sLength - 1] == '\n')
          ??????????????? return string.substring(0, sLength - 1);
          ??????????? for(int i = sLength - 1; i > 0; i--)
          ??????????????? if(charArray[i] == ' ')
          ??????????????????? return string.substring(0, i).trim();
          ?
          ??????? } else
          ??????? if(minLength != -1 && sLength > minLength)
          ??????? {
          ??????????? for(int i = 0; i < minLength; i++)
          ??????????????? if(charArray[i] == ' ')
          ??????????????????? return string;
          ?
          ??????? }
          ??????? if(minLength > -1 && minLength <= string.length())
          ??????????? return string.substring(0, minLength);
          ??????? else
          ??????????? return string.substring(0, length);
          ??? }
          ?
          ??? public static final String chopAtWord(String string, int length)
          ??? {
          ??????? return chopAtWord(string, length, -1);
          ??? }
          ?
          ??? public static String chopAtWordsAround(String input, String wordList[], int numChars)
          ??? {
          ??????? if(input == null || "".equals(input.trim()) || wordList == null || wordList.length == 0 || numChars == 0)
          ??????????? return "";
          ??????? String lc = input.toLowerCase();
          ??????? for(int i = 0; i < wordList.length; i++)
          ??????? {
          ??????????? int pos = lc.indexOf(wordList[i]);
          ??????????? if(pos > -1)
          ??????????? {
          ??????????????? int beginIdx = pos - numChars;
          ??????????????? if(beginIdx < 0)
          ??????????????????? beginIdx = 0;
          ??????????????? int endIdx = pos + numChars;
          ??????????????? if(endIdx > input.length() - 1)
          ??????????????????? endIdx = input.length() - 1;
          ??????????????? char chars[];
          ??????????????? for(chars = input.toCharArray(); beginIdx > 0 && chars[beginIdx] != ' ' && chars[beginIdx] != '\n' && chars[beginIdx] != '\r'; beginIdx--);
          ??????????????? for(; endIdx < input.length() && chars[endIdx] != ' ' && chars[endIdx] != '\n' && chars[endIdx] != '\r'; endIdx++);
          ??????????????? return input.substring(beginIdx, endIdx);
          ??????????? }
          ??????? }
          ?
          ??????? return input.substring(0, input.length() < 200 ? input.length() : 200);
          ??? }
          ?
          ??? public static final String highlightWords(String string, String words[], String startHighlight, String endHighlight)
          ??? {
          ??????? if(string == null || words == null || startHighlight == null || endHighlight == null)
          ??????????? return null;
          ??????? StringBuffer regexp = new StringBuffer();
          ??????? regexp.append("(?i)\\b(");
          ??????? for(int x = 0; x < words.length; x++)
          ??????? {
          ??????????? words[x] = words[x].replaceAll("([\\$\\?\\|\\/\\.])", "\\\\$1");
          ??????????? regexp.append(words[x]);
          ??????????? if(x != words.length - 1)
          ??????????????? regexp.append("|");
          ??????? }
          ?
          ??????? regexp.append(")");
          ??????? return string.replaceAll(regexp.toString(), startHighlight + "$1" + endHighlight);
          ??? }
          ?
          ??? public static final String escapeForSQL(String string)
          ??? {
          ??????? if(string == null)
          ??????????? return null;
          ??????? if(string.length() == 0)
          ??????????? return string;
          ??????? char input[] = string.toCharArray();
          ??????? int i = 0;
          ??????? int last = 0;
          ??????? int len = input.length;
          ??????? StringBuffer out = null;
          ??????? for(; i < len; i++)
          ??????? {
          ??????????? char ch = input[i];
          ??????????? if(ch != '\'')
          ??????????????? continue;
          ??????????? if(out == null)
          ??????????????? out = new StringBuffer(len + 2);
          ??????????? if(i > last)
          ??????????????? out.append(input, last, i - last);
          ??????????? last = i + 1;
          ??????????? out.append('\'').append('\'');
          ??????? }
          ?
          ??????? if(out == null)
          ??????????? return string;
          ??????? if(i > last)
          ??????????? out.append(input, last, i - last);
          ??????? return out.toString();
          ??? }
          ?
          ??? public static final String escapeForXML(String string)
          ??? {
          ??????? if(string == null)
          ??????????? return null;
          ??????? int i = 0;
          ??????? int last = 0;
          ??????? char input[] = string.toCharArray();
          ??????? int len = input.length;
          ??????? StringBuffer out = new StringBuffer((int)((double)len * 1.3D));
          ??????? for(; i < len; i++)
          ??????? {
          ??????????? char ch = input[i];
          ??????????? if(ch > '>')
          ??????????????? continue;
          ??????????? if(ch == '<')
          ??????????? {
          ??????????????? if(i > last)
          ??????????????????? out.append(input, last, i - last);
          ??????????????? last = i + 1;
          ??????????????? out.append(LT_ENCODE);
          ??????????????? continue;
          ??????????? }
          ??????????? if(ch == '>')
          ??????????? {
          ??????????????? if(i > last)
          ??????????????????? out.append(input, last, i - last);
          ??????????????? last = i + 1;
          ??????????????? out.append(GT_ENCODE);
          ??????????????? continue;
          ??????????? }
          ??????????? if(ch == '&')
          ??????????? {
          ??????????????? if(i > last)
          ??????????????????? out.append(input, last, i - last);
          ??????????????? last = i + 1;
          ??????????????? out.append(AMP_ENCODE);
          ??????????????? continue;
          ??????????? }
          ??????????? if(ch == '"')
          ??????????? {
          ??????????????? if(i > last)
          ??????????????????? out.append(input, last, i - last);
          ??????????????? last = i + 1;
          ??????????????? out.append(QUOTE_ENCODE);
          ??????????????? continue;
          ??????????? }
          ??????????? if(ch == '\n' || ch == '\r' || ch == '\t' || ch >= ' ')
          ??????????????? continue;
          ??????????? if(i > last)
          ??????????????? out.append(input, last, i - last);
          ??????????? last = i + 1;
          ??????? }
          ?
          ??????? if(last == 0)
          ??????????? return string;
          ??????? if(i > last)
          ??????????? out.append(input, last, i - last);
          ??????? return out.toString();
          ??? }
          ?
          ??? public static final String unescapeFromXML(String string)
          ??? {
          ??????? string = replace(string, "<", "<");
          ??????? string = replace(string, ">", ">");
          ??????? string = replace(string, """, "\"");
          ??????? return replace(string, "&", "&");
          ??? }
          ?
          ??? public static final String zeroPadString(String string, int length)
          ??? {
          ??????? if(string == null || string.length() > length)
          ??????? {
          ??????????? return string;
          ??????? } else
          ??????? {
          ??????????? StringBuffer buf = new StringBuffer(length);
          ??????????? buf.append(zeroArray, 0, length - string.length()).append(string);
          ??????????? return buf.toString();
          ??????? }
          ??? }
          ?
          ??? public static final String Encode(String input,String encode){
          ????? if(input==null || "".equals(input)) return input;
          ????? try {
          ??????? return new String(input.getBytes("iso-8859-1"), encode);
          ????? }
          ????? catch (UnsupportedEncodingException ex) {
          ??????? return "";
          ????? }
          ??? }
          ?
          ??? public static final String getFileExtName(String filename)
          ??? {
          ??????? String ext = "";
          ??????? int p = filename.lastIndexOf(".");
          ??????? if (p != -1)
          ??????? {
          ??????????? ext = filename.substring(p + 1, filename.length());
          ??????? }
          ??????? return ext.toLowerCase();
          ??? }
          ?
          ??? public static final String getPath(long id)
          ??? {
          ??????? String returnStr = "";
          ??????? char charArray[] = String.valueOf(id).toCharArray();
          ??????? int j = charArray.length;
          ??????? for (int i = 0; i < j; i++)
          ??????? {
          ??????????? returnStr += charArray[i] + File.separator;
          ??????? }
          ??????? return returnStr;
          ??? }
          ?
          ??? public static final String getUrlPath(long id)
          ??? {
          ??????? String returnStr = "";
          ??????? char charArray[] = String.valueOf(id).toCharArray();
          ??????? int j = charArray.length;
          ??????? for (int i = 0; i < j; i++)
          ??????? {
          ??????????? returnStr += charArray[i] + "/";
          ??????? }
          ??????? return returnStr;
          ??? }
          ?
          ??? public static final String dateToMillis(Date date)
          ??? {
          ????? return "";
          ??????? /*if(ConnectionManager.getDateType() == 12)
          ??????????? return zeroPadString(Long.toString(date.getTime()), 15);
          ??????? else
          ??????????? return Long.toString(date.getTime());*/
          ??? }
          ?
          ??? /**
          ???? * @param len 需要顯示的長度(<font color="red">注意:長度是以byte為單位的,一個漢字是2個byte</font>)
          ???? * @param symbol 用于表示省略的信息的字符,如“...”,“>>>”等。
          ???? * @return 返回處理后的字符串
          ???? */
          ??? public static String getLimitLengthString(String str,int len, String symbol) throws
          ??????????? UnsupportedEncodingException
          ??? {
          ??????? if(str==null || "".equals(str)) return str;
          ??????? int counterOfDoubleByte;
          ??????? byte b[];
          ??????? counterOfDoubleByte = 0;
          ??????? b = str.getBytes("GBK");
          ??????? if (b.length <= len)
          ??????????? return str;
          ??????? for (int i = 0; i < len; i++)
          ??????? {
          ??????????? if (b[i] < 0)
          ??????????????? counterOfDoubleByte++;
          ??????? }
          ?
          ??????? if (counterOfDoubleByte % 2 == 0)
          ??????????? return new String(b, 0, len, "GBK") + symbol;
          ??????? else
          ??????????? return new String(b, 0, len - 1, "GBK") + symbol;
          ??? }
          ?
          ?
          ??? public static boolean isValidEmailAddress(String addr)
          ??? {
          ??????? if(addr == null)
          ??????????? return false;
          ??????? addr = addr.trim();
          ??????? if(addr.length() == 0)
          ??????????? return false;
          ??????? Matcher matcher = basicAddressPattern.matcher(addr);
          ??????? if(!matcher.matches())
          ??????????? return false;
          ??????? String userPart = matcher.group(1);
          ??????? String domainPart = matcher.group(2);
          ??????? matcher = validUserPattern.matcher(userPart);
          ??????? if(!matcher.matches())
          ??????????? return false;
          ??????? matcher = ipDomainPattern.matcher(domainPart);
          ??????? if(matcher.matches())
          ??????? {
          ??????????? for(int i = 1; i < 5; i++)
          ??????????? {
          ??????????????? String num = matcher.group(i);
          ??????????????? if(num == null)
          ??????????????????? return false;
          ??????????????? if(Integer.parseInt(num) > 254)
          ??????????????????? return false;
          ??????????? }
          ?
          ??????????? return true;
          ??????? }
          ??????? matcher = domainPattern.matcher(domainPart);
          ??????? if(matcher.matches())
          ??????? {
          ??????????? String tld = matcher.group(matcher.groupCount());
          ??????????? matcher = tldPattern.matcher(tld);
          ??????????? return tld.length() == 3 || matcher.matches();
          ??????? } else
          ??????? {
          ??????????? return false;
          ??????? }
          ??? }
          ?
          ??? /**
          ???? * 判斷是否為數字組成的字串
          ???? * @param validString 要判斷的字符串
          ???? * @return boolen值,true或false
          ???? */
          ??? public static boolean isNumber(String validString){
          ????? try
          ????? {
          ??????? if (validString == null)
          ????????? return false;
          ??????? byte[] tempbyte = validString.getBytes();
          ??????? for (int i = 0; i < validString.length(); i++) {
          ????????? //by=tempbyte[i];
          ????????? if ( (tempbyte[i] < 48) || (tempbyte[i] > 57)) {
          ??????????? return false;
          ????????? }
          ??????? }
          ??????? return true;
          ????? }
          ????? catch(Exception ex)
          ????? {
          ??????? return false;
          ????? }
          ? }
          ?
          ??? private static final char QUOTE_ENCODE[] = """.toCharArray();
          ??? private static final char AMP_ENCODE[] = "&".toCharArray();
          ??? private static final char LT_ENCODE[] = "<".toCharArray();
          ??? private static final char GT_ENCODE[] = ">".toCharArray();
          ??? private static Pattern basicAddressPattern;
          ??? private static Pattern validUserPattern;
          ??? private static Pattern domainPattern;
          ??? private static Pattern ipDomainPattern;
          ??? private static Pattern tldPattern;
          ??? private static MessageDigest digest = null;
          ??? private static final char CA[];
          ??? private static final int IA[];
          ??? private static final BitSet allowed_query;
          ??? private static Random randGen = new Random();
          ??? private static char numbersAndLetters[] = "0123456789abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
          ??? private static final char zeroArray[] = "0000000000000000000000000000000000000000000000000000000000000000".toCharArray();
          ??? private static MD5 md5 = new MD5();
          ?
          ??? static
          ??? {
          ??????? String basicAddress = "^([\\w\\.-]+)@([\\w\\.-]+)$";
          ??????? String specialChars = "\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
          ??????? String validChars = "[^ \f\n\r\t" + specialChars + "]";
          ??????? String atom = validChars + "+";
          ??????? String quotedUser = "(\"[^\"]+\")";
          ??????? String word = "(" + atom + "|" + quotedUser + ")";
          ??????? String validUser = "^" + word + "(\\." + word + ")*$";
          ??????? String domain = "^" + atom + "(\\." + atom + ")+$";
          ??????? String ipDomain = "^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$";
          ??????? String knownTLDs = "^\\.(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$";
          ??????? basicAddressPattern = Pattern.compile(basicAddress, 2);
          ??????? validUserPattern = Pattern.compile(validUser, 2);
          ??????? domainPattern = Pattern.compile(domain, 2);
          ??????? ipDomainPattern = Pattern.compile(ipDomain, 2);
          ??????? tldPattern = Pattern.compile(knownTLDs, 2);
          ??????? CA = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray();
          ??????? IA = new int[256];
          ??????? Arrays.fill(IA, -1);
          ??????? int i = 0;
          ??????? for(int iS = CA.length; i < iS; i++)
          ??????????? IA[CA[i]] = i;
          ?
          ??????? IA[61] = 0;
          ??????? allowed_query = new BitSet(256);
          ??????? for(i = 48; i <= 57; i++)
          ??????????? allowed_query.set(i);
          ?
          ??????? for(i = 97; i <= 122; i++)
          ??????????? allowed_query.set(i);
          ?
          ??????? for(i = 65; i <= 90; i++)
          ??????????? allowed_query.set(i);
          ?
          ??????? allowed_query.set(45);
          ??????? allowed_query.set(95);
          ??????? allowed_query.set(46);
          ??????? allowed_query.set(33);
          ??????? allowed_query.set(126);
          ??????? allowed_query.set(42);
          ??????? allowed_query.set(39);
          ??????? allowed_query.set(40);
          ??????? allowed_query.set(41);
          ?
          ?
          ??? }
          }

          posted on 2006-10-11 17:11 無聲 閱讀(644) 評論(0)  編輯  收藏 所屬分類: java共享代碼

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 巩留县| 雷州市| 巩义市| 合川市| 无锡市| 沐川县| 广南县| 女性| 海伦市| 慈溪市| 桐柏县| 东阿县| 内黄县| 永丰县| 微山县| 旌德县| 泗阳县| 涞水县| 苗栗市| 水富县| 宣汉县| 全椒县| 金寨县| 清涧县| 五华县| 铁岭县| 彝良县| 梨树县| 博白县| 承德市| 新丰县| 阳曲县| 九江市| 高陵县| 盘锦市| 永吉县| 峡江县| 贵溪市| 祁东县| 大冶市| 平潭县|