项目中的一个工具类,有点乱。
来源:互联网 发布:淘宝网李锦记生抽价格 编辑:程序博客网 时间: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
- 项目中的一个工具类,有点乱。
- 有点乱!
- 有点乱
- 有点乱
- 有点乱~
- 有点乱
- 有点乱
- 有点乱
- 有点乱
- 有点乱
- 有点乱、有点烦
- 有点乱,有点迷茫
- 文章有点乱,开了一个博客来整理
- jquery 中的选择器的学习 有点乱啊
- 今天有点乱
- 有点乱的心
- 最近有点乱
- 工作有点乱
- 【机器学习笔记2】Linear Regression总结
- 进程所用内存(包括页表、vma、映射内存)的释放过程 (基于linux2.6.11.12)
- openfire + fastpath + webchat + spark 搭建在线客服系统
- nmap常见操作
- 灰度图的色标反转问题-matlab
- 项目中的一个工具类,有点乱。
- 阿里腾讯开撕,钉钉的广告打到腾讯的地盘了
- 【机器学习笔记3】Stanford公开课Exercise 2——Linear Regression
- ie中显示$未定义
- 111. Minimum Depth of Binary Tree
- 第一次写博客
- 【机器学习笔记4】Stanford公开课Exercise 3——Multivariate Linear Regression
- linux内核部件--链表之klist
- MySQL查看并修改当前数据库编码