package bruce.lib; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * @author NaNashi * */ public class Strings { /** * 斷行 */ public static final String NEW_LINE = String.format("%n"); /** * @param data * 文字類型物件 * @return */ public static boolean containsNullOrEmpty(CharSequence... data) { for (Object o : data) { if (o == null || o.toString().trim().length() == 0) return true; } return false; } /** * @param data * @return */ public static boolean isNullOrEmpty(CharSequence data) { return data == null || data.toString().trim().length() == 0; } /** * @param <T> * @param array * @param seperator * @return */ public static <T> String join(T[] array, String seperator) { StringBuilder sb = new StringBuilder(); for (T t : array) sb.append(t.toString()).append(seperator); sb.delete(sb.length() - seperator.length(), sb.length()); return sb.toString(); } /** * @param s * @return */ public static String MD5(CharSequence s) { char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; byte[] strTemp = s.toString().getBytes(); MessageDigest mdTemp = null; try { mdTemp = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } mdTemp.update(strTemp); byte[] md = mdTemp.digest(); int j = md.length; char str[] = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = md[i]; str[k++] = hexDigits[byte0 >>> 4 & 0xf]; str[k++] = hexDigits[byte0 & 0xf]; } return new String(str); } /** * @param s * 參數字串 * @return 處理SQL的參數,NULL時預設為空字串 */ public static String quote(CharSequence s) { return quote(s, false); } /** * @param s * 參數字串 * @param alloweNull * 是否轉換NULL * @return */ public static String quote(CharSequence s, boolean allowNull) { if (allowNull) return Strings.isNullOrEmpty(s) ? "null" : String.format("'%s'", s.toString().replaceAll("'", "''")); else return Strings.isNullOrEmpty(s) ? "''" : String.format("'%s'", s.toString().replaceAll("'", "''")); } /** * @param s * @return */ public static String removeAllTags(CharSequence s) { return s.toString().replaceAll("<[^>]+>", ""); } /** * @param s * @return */ public static String trimTagSpaces(CharSequence s) { StringBuilder sb = new StringBuilder(s) ; return s.toString().replaceAll("\n", "").replaceAll("\r", "").replaceAll(">\\s+<", "><"); } /** * @param s * @return * @throws IOException */ public static String decodeBase64(CharSequence s) throws IOException { return s == null ? null : new String((new sun.misc.BASE64Decoder()).decodeBuffer(s.toString())); } /** * @param s * @return */ public static String encodeBase64(CharSequence s) { return s == null ? null : (new sun.misc.BASE64Encoder()).encode(s.toString().getBytes()); } /** * @param s * @return */ public static String NCR(CharSequence s) { StringBuilder sb = new StringBuilder(); char[] ca = s.toString().toCharArray(); for (char c : ca) { sb.append(String.format("&#x%s;", Integer.toHexString(c))); } return sb.toString(); } public static String encodeURL(CharSequence s, String encoding) throws UnsupportedEncodingException { return URLEncoder.encode(s.toString(), encoding); } public static String encodeURL(CharSequence s) throws UnsupportedEncodingException { return encodeURL(s, "UTF-8"); } public static String decodeURL(CharSequence s, String encoding) throws UnsupportedEncodingException { return URLDecoder.decode(s.toString(), encoding); } public static String decodeURL(CharSequence s) throws UnsupportedEncodingException { return decodeURL(s, "UTF-8"); } }