项目中的一个工具类,有点乱。

来源:互联网 发布:淘宝网李锦记生抽价格 编辑:程序博客网 时间:2024/06/06 00:32

项目中的一个工具类,有点乱。

主要是和string相关的一些东西。

还有一些16进制相关。


import android.content.Context;import android.database.Cursor;import android.net.Uri;import android.provider.MediaStore;import android.util.DisplayMetrics;import android.util.Log;import android.view.WindowManager;import java.security.MessageDigest;import java.text.DateFormat;import java.text.ParseException;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Calendar;import java.util.Date;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * 工具类 * * @author */public class Util {    private static String SECURITYCODE = "securitycode";    /**     * @param input     * @return     */    public static String ToDBC(String input) {        char[] c = input.toCharArray();        for (int i = 0; i < c.length; i++) {            if (c[i] == 12288) {                c[i] = (char) 32;                continue;            }            if (c[i] > 65280 && c[i] < 65375)                c[i] = (char) (c[i] - 65248);        }        return new String(c);    }    public String getRealPathFromURI(Context context,Uri contentUri) {        String[] proj = { MediaStore.Images.Media.DATA };        Cursor cursor = context.getContentResolver().query(contentUri, proj, null, null, null);        int column_index                = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);        cursor.moveToFirst();        return cursor.getString(column_index);    }    /**     * 检测String是否全是中文     *     * @param name     * @return     */    public static boolean checkNameChese(String name) {        boolean res = true;        char[] cTemp = name.toCharArray();        for (int i = 0; i < name.length(); i++) {            if (!isChinese(cTemp[i])) {                res = false;                break;            }        }        return res;    }    /**     * 判定输入汉字     *     * @param c     * @return     */    public static boolean isChinese(char c) {        Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);        if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS                || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS                || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A                || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION                || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION                || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {            return true;        }        return false;    }    /**     * 生成安全校验码     *     * @param map     * @return     */    public static String makeHashCode(Map<String, String> map) {        Object[] key_arr = map.keySet().toArray();        Arrays.sort(key_arr);        StringBuffer sb = new StringBuffer();        for (Object key : key_arr) {            sb.append(map.get(key));//hash=MD5(v2v1v3securitycode)        }        //排序后拼接的字符转进行加密算法        return MD5(sb.toString() + SECURITYCODE);    }    /**     * 获取手机系统版本     *     * @return     */    public static int getAndroidSDKVersion() {        int version = 0;        try {            version = Integer.valueOf(android.os.Build.VERSION.SDK);        } catch (Exception e) {            e.printStackTrace();        }        return version;    }    //判断是否为手机号码//    public static boolean isMobileNO(String mobiles) {        Pattern p = Pattern                .compile("^((13[0-9])|(15[^4,\\D])|(18[0-9])|(17[0,6,7,8])|(14[5,7]))\\d{8}$");        Matcher m = p.matcher(mobiles);        return m.matches();    }    /**     * MD5加密     *     * @param oldStr     * @return     */    public static String MD5(String oldStr) {        String newStr = oldStr;        try {            MessageDigest md5 = MessageDigest.getInstance("MD5");            byte[] b = md5.digest(oldStr.getBytes("utf-8"));            int i;            StringBuffer buf = new StringBuffer("");            for (int offset = 0; offset < b.length; offset++) {                i = b[offset];                if (i < 0)                    i += 256;                if (i < 16)                    buf.append("0");                buf.append(Integer.toHexString(i));            }            newStr = buf.toString();        } catch (Exception e) {            e.printStackTrace();        }        return newStr;    }    /**     * 帖子计算时间     *     * @param createTime     * @return     */    public static String postMakeTimeStr(String createTime) {        try {            SimpleDateFormat simpleDateFormat = new SimpleDateFormat(                    "yyyy/MM/dd HH:mm");            SimpleDateFormat format = new SimpleDateFormat("HH:mm");            Date date = simpleDateFormat.parse(createTime);            Date nowDate = new Date();            int min = 60;            int hour = min * 60;            int hour24 = hour * 24;            int hour48 = hour24 * 2;            long cha = (nowDate.getTime() - date.getTime()) / 1000;            if (cha < min) { // 1分钟内 为刚刚                return "刚刚";            } else if (cha < hour) { // 一小时内 xx分钟                return (cha / (min)) + "分钟前";            } else if (cha < hour24) { // 24小时内 xx小时                return ((int) cha / hour) + "小时前";            } else if (cha < hour48) { // 48小时内 昨天                return simpleDateFormat.format(date);                /* * String nowStr = simpleDateFormat.format(nowDate); String * dateStr = * nowStr.substring(0,nowStr.indexOf(" "))+" 00:00:00"; * if((simpleDateFormat * .parse(dateStr).getTime()-date.getTime())<hour48){ return * "昨天"; }else{ return createTime; } */            }        } catch (Exception e) {            e.printStackTrace();        }        return chengaDateStyle(createTime, "yyyy/MM/dd HH:mm:ss",                "yyyy/MM/dd HH:mm");    }    /**     * 得到屏幕高度     *     * @param windowManager     * @return     */    public static int getHeight(WindowManager windowManager) {        DisplayMetrics metric = new DisplayMetrics();        windowManager.getDefaultDisplay().getMetrics(metric);        int height = metric.heightPixels; // 屏幕高度(像素)        float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)        return height;    }    /**     * 改变日期格式     *     * @param date     * @param oldStyle     * @param newStyle     * @return     */    public static String chengaDateStyle(String date, String oldStyle,                                         String newStyle) {        try {            SimpleDateFormat oldSdf = new SimpleDateFormat(oldStyle);            SimpleDateFormat newSdf = new SimpleDateFormat(newStyle);            date = newSdf.format(oldSdf.parse(date));        } catch (Exception e) {            e.printStackTrace();        }        return date;    }    /**     * 根据年月日等到星期几     *     * @param startTime     * @return     */    public static String getWeek(String startTime) {        String Week = "星期";        SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");// 也可将此值当参数传进来        Calendar c = Calendar.getInstance();        try {            c.setTime(format.parse(startTime));        } catch (Exception e) {            e.printStackTrace();        }        switch (c.get(Calendar.DAY_OF_WEEK)) {            case 1:                Week += "日";                break;            case 2:                Week += "一";                break;            case 3:                Week += "二";                break;            case 4:                Week += "三";                break;            case 5:                Week += "四";                break;            case 6:                Week += "五";                break;            case 7:                Week += "六";                break;            default:                break;        }        return Week;    }    /**     * 判断list是否全是相同元素的     *     * @param list     * @return     */    public static boolean hasSame(List<? extends Object> list) {        if (null == list)            return false;        return 1 == new HashSet<Object>(list).size();    }    /**     * 把日期Date转换成字符串     *     * @param dateString     * @return     */    public static Date stringToDate(String dateString) {        ParsePosition position = new ParsePosition(0);        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(                "yyyy/MM/dd HH:mm:ss");        Date dateValue = simpleDateFormat.parse(dateString, position);        return dateValue;    }    /**     * 获取某一天在这个一周是星期几     *     * @param date     * @return     */    public static String getWeekday(String date) {// 必须yyyy-MM-dd        SimpleDateFormat sd = new SimpleDateFormat("yyyy/MM/dd");        SimpleDateFormat sdw = new SimpleDateFormat("E");        Date d = null;        String num = "一";        try {            d = sd.parse(date);            String zhou = sdw.format(d);            num = zhou.substring(zhou.length() - 1, zhou.length());        } catch (Exception e) {            e.printStackTrace();        }        return num;    }    /**     * @param oldTime 较小的时间     * @param newTime 较大的时间 (如果为空 默认当前时间 ,表示和当前时间相比)     * @return -1 :同一天. 0:昨天 . 1 :至少是前天.     * @throws ParseException 转换异常     * @author .     */    public static int isYeaterday(Date oldTime, Date newTime)            throws ParseException {        if (newTime == null) {            newTime = new Date();        }        // 将下面的 理解成 yyyy-MM-dd 00:00:00 更好理解点        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");        String todayStr = format.format(newTime);        Date today = format.parse(todayStr);        // 昨天 86400000=24*60*60*1000 一天        if ((today.getTime() - oldTime.getTime()) > 0                && (today.getTime() - oldTime.getTime()) <= 86400000) {            return 0;        } else if ((today.getTime() - oldTime.getTime()) <= 0) { // 至少是今天            return -1;        } else { // 至少是前天            return 1;        }    }    /**     * 计算还剩多少天     *     * @param time1     * @param time2     * @return     */    public static long getQuot(String time1, String time2) {        long quot = 0;        SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");        try {            Date date1 = ft.parse(time1);            Date date2 = ft.parse(time2);            quot = date1.getTime() - date2.getTime();            quot = quot / 1000 / 60 / 60 / 24;        } catch (ParseException e) {            e.printStackTrace();        }        return quot;    }    public static long gettimes(String OrderTime, String servertime) {        Log.w("String", OrderTime + "   " + servertime);        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        try {            long servertimelong = Long.parseLong(servertime);            Date d3 = df.parse(OrderTime);            Date d = new Date(servertimelong);            SimpleDateFormat format = new SimpleDateFormat(                    "yyyy-MM-dd HH:mm:ss");            String date = format.format(d);            Log.w("Util.servertime", servertime);            Date d1 = df.parse(date);//Calendar ca = Calendar.getInstance();//ca.setTime(d3);//ca.add(ca.DATE, 1);// 30为增加的天数,可以改变的//d3 = ca.getTime();            //String backTime = format.format(d3);            String backTime = format.format(d3.getTime() + 1000 * 60 * 60 * 2);            Date d2 = df.parse(backTime);            long diff = d2.getTime() - d1.getTime();            long days = diff / 1000;            return days;        } catch (Exception e) {        }        return 0;    }    public static long gettimes7(String OrderTime, String servertime) {        Log.w("String", OrderTime + "   " + servertime);        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        long servertimelong = Long.parseLong(servertime);        try {            Date d3 = df.parse(OrderTime);            Date d = new Date(servertimelong);            SimpleDateFormat format = new SimpleDateFormat(                    "yyyy-MM-dd HH:mm:ss");            String date = format.format(d);            Date d1 = df.parse(date);//Calendar ca = Calendar.getInstance();//ca.setTime(d3);//ca.add(ca.DATE, 7);// 7为增加的天数,可以改变的//d3 = ca.getTime();            //String backTime = format.format(d3);            String backTime = format.format(d3.getTime() + 1000 * 60 * 60 * 2);            Date d2 = df.parse(backTime);            long diff = d2.getTime() - d1.getTime();            long days = diff / 1000;            return days;        } catch (Exception e) {        }        return 0;    }    /**     * 字符串转换成十六进制字符串     */    public static String str2HexStr(String str) {        char[] chars = "0123456789ABCDEF".toCharArray();        StringBuilder sb = new StringBuilder("");        byte[] bs = str.getBytes();        int bit;        for (int i = 0; i < bs.length; i++) {            bit = (bs[i] & 0x0f0) >> 4;            sb.append(chars[bit]);            bit = bs[i] & 0x0f;            sb.append(chars[bit]);        }        return sb.toString();    }    /**     * 把16进制字符串转换成字节数组     *     * @param hex hexString     * @return byte[]     */    public static byte[] hexStringToByte(String hex) {        int len = (hex.length() / 2);        byte[] result = new byte[len];        char[] achar = hex.toCharArray();        for (int i = 0; i < len; i++) {            int pos = i * 2;            result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));        }        return result;    }    private static int toByte(char c) {        byte b = (byte) "0123456789ABCDEF".indexOf(c);        return b;    }    /**     * byte[]数组转换成十六进制字符串     *     * @param bArray byte[]     * @return HexString     */    public static final String bytesToHexString(byte[] bArray) {        StringBuffer sb = new StringBuffer(bArray.length);        String sTemp;        for (int i = 0; i < bArray.length; i++) {            sTemp = Integer.toHexString(0xFF & bArray[i]);            if (sTemp.length() < 2)                sb.append(0);            sb.append(sTemp.toUpperCase());        }        return sb.toString();    }    /**     * byte[]数组转成十六进制字符串     *     * @param b byte[]     * @return HexString     */    public static String toHexString1(byte[] b) {        StringBuffer buffer = new StringBuffer();        for (int i = 0; i < b.length; ++i) {            buffer.append(toHexString1(b[i]));        }        return buffer.toString();    }    public static String toHexString1(byte b) {        String s = Integer.toHexString(b & 0xFF);        if (s.length() == 1) {            return "0" + s;        } else {            return s;        }    }    /**     * 十六进制字符串转换成字符串     *     * @param hexStr hexString     * @return String     */    public static String hexStr2Str(String hexStr) {        String str = "0123456789ABCDEF";        char[] hexs = hexStr.toCharArray();        byte[] bytes = new byte[hexStr.length() / 2];        int n;        for (int i = 0; i < bytes.length; i++) {            n = str.indexOf(hexs[2 * i]) * 16;            n += str.indexOf(hexs[2 * i + 1]);            bytes[i] = (byte) (n & 0xff);        }        return new String(bytes);    }    /**     * 十六进制字符串转换字符串     *     * @param s HexString     * @return String     */    public static String toStringHex(String s) {        byte[] baKeyword = new byte[s.length() / 2];        for (int i = 0; i < baKeyword.length; i++) {            try {                baKeyword[i] = (byte) (0xff & Integer.parseInt(s.substring(                        i * 2, i * 2 + 2), 16));            } catch (Exception e) {                e.printStackTrace();            }        }        try {            s = new String(baKeyword, "utf-8");// UTF-16le:Not        } catch (Exception e1) {            e1.printStackTrace();        }        return s;    }}


0 0
原创粉丝点击