package cn.mb.cloud.gateway.util; import java.io.UnsupportedEncodingException; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 基本数据处理工具类 */ public class SinataUtil { /** * List集合分页
* 创建人:Mryang
* 时间:2016年7月28日-下午2:58:14
* @param * @param pageNo * @param pageSize * @param list * @throws Exception List
*/ public static List listpage(int pageNo, int pageSize, List list) throws Exception { List result = new ArrayList(); if (list != null && list.size() > 0) { int allCount = list.size(); if(pageNo > 1 && allCount < pageSize) { return new ArrayList<>(); } int pageCount = (allCount + pageSize - 1) / pageSize; if (pageNo >= pageCount) { pageNo = pageCount; } int start = (pageNo - 1) * pageSize; int end = pageNo * pageSize; if (end >= allCount) { end = allCount; } for (int i = start; i < end; i++) { result.add(list.get(i)); } } return (result != null && result.size() > 0) ? result : new ArrayList(); } /** * Double类型取整 * @param num * @return */ public static String doubleTrans(double num) { return String.valueOf((long) num); } /** * Double类型保留1位小数 * * @param num * @return */ public static String doubleRetainOne(double num) { DecimalFormat dfs = new DecimalFormat("0.0"); return dfs.format(num); } /** * Double类型保留2位小数 * * @param num * @return */ public static String doubleRetainTwo(double num) { DecimalFormat dfs = new DecimalFormat("0.00"); String.format("%.2f", num); return dfs.format(num); } /** * Double类型保留1位小数(四舍五入) * * @param num * @return */ public static String doubleForwardOne(double num) { return String.format("%.1f", num); } /** * Double类型保留2位小数(四舍五入) * * @param num * @return */ public static String doubleForwardTwo(double num) { return String.format("%.2f", num); } /** * 字符串转换成Ascii * * @param value * @return */ public static String stringToAscii(String value) { StringBuffer sbu = new StringBuffer(); char[] chars = value.toCharArray(); for (int i = 0; i < chars.length; i++) { if (i != chars.length - 1) { sbu.append((int) chars[i]); } else { sbu.append((int) chars[i]); } } return sbu.toString(); } /** * 小数转换为百分比 * * @param decimal * @return * @author TaoNingBo */ public static String decTurnPercent(double decimal) { NumberFormat num = NumberFormat.getPercentInstance(); num.setMaximumIntegerDigits(3); num.setMaximumFractionDigits(2); return num.format(decimal); } /** * Ascii转换成字符串 * * @param value * @return */ public static String asciiToString(String value) { String[] chars = value.split(","); StringBuffer sbu = new StringBuffer(); for (int i = 0; i < chars.length; i++) { sbu.append((char) Integer.parseInt(chars[i])); } return sbu.toString(); } /** * 字符串转换unicode * * @param string * @return * @author TaoNingBo */ public static String string2Unicode(String string) { StringBuffer unicode = new StringBuffer(); for (int i = 0; i < string.length(); i++) { // 取出每一个字符 char c = string.charAt(i); // 转换为unicode unicode.append("\\u" + Integer.toHexString(c)); } return unicode.toString(); } /** * unicode 转字符串 * * @param unicode * @return * @author TaoNingBo */ public static String unicode2String(String unicode) { StringBuffer string = new StringBuffer(); String[] hex = unicode.split("\\\\u"); for (int i = 1; i < hex.length; i++) { // 转换出每一个代码点 int data = Integer.parseInt(hex[i], 16); // 追加成string string.append((char) data); } return string.toString(); } /** * 字符串编码转换的实现方法 * * @param str * 待转换编码的字符串 * @param newCharset * 目标编码 * @return * @throws UnsupportedEncodingException */ public static String changeCharset(String str, String newCharset) throws UnsupportedEncodingException { if (str != null) { // 用默认字符编码解码字符串。 byte[] bs = str.getBytes(); // 用新的字符编码生成字符串 return new String(bs, newCharset); } return null; } /** * 注: \n 回车( ) \t 水平制表符( ) \s 空格(\u0008) \r 换行( ) * * @param str * @return */ public static String replaceBlank(String str) { String dest = ""; if (str != null) { Pattern p = Pattern.compile("\\s*|\t|\r|\n"); Matcher m = p.matcher(str); dest = m.replaceAll(""); } return dest; } /** * 判断该字符串不能为空 * * @param str * @return * @author TaoNingBo */ public static boolean isNotEmpty(Object str) { return !isEmpty(str); } public static boolean isNotEmptyUndefined(Object str) { return !isEmpty(str) && !str.toString().equals("undefined"); } /** * 字符串编码转换的实现方法 * * @param str * 待转换编码的字符串 * @param oldCharset * 原编码 * @param newCharset * 目标编码 * @return * @throws UnsupportedEncodingException */ public static String changeCharset(String str, String oldCharset, String newCharset) throws UnsupportedEncodingException { if (str != null) { // 用旧的字符编码解码字符串。解码可能会出现异常。 byte[] bs = str.getBytes(oldCharset); // 用新的字符编码生成字符串 return new String(bs, newCharset); } return null; } /** * 给手机号码加分割符 * * @param phone * @return * @author TaoNingBo */ public static String splitPhone(String phone) { if (isNotEmpty(phone)) { String strone = phone.substring(0, 3); String strtwo = phone.substring(strone.length(), 7); String strthree = phone.substring(strtwo.length() + strone.length(), phone.length()); return strone + "-" + strtwo + "-" + strthree; } return ""; } /** * 非空判断 * * @param str * @return * @author TaoNingBo */ public static boolean isEmpty(Object str) { return str == null || str.toString().length() == 0 || str.equals("") || str.toString().matches("\\s*"); } /** * 把米转换成公里 * * @param km * @return * @author TaoNingBo */ public static Double kmTransKilo(Integer m) { return Math.round(m / 100d) / 10d; } /** * 将List<{@link Object}>转换成List<{@link T}> * * @param list * 将要转换的对象 * @param clazs * 需要转换的泛型对象 * @return * @author TaoNingBo */ @SuppressWarnings("unchecked") public static List fromToObject(List list, Class clazs) { List t = new ArrayList(); for (Object object : list) { t.add((T) object); } return t; } /** * 生成 uuid, 即用来标识一笔单,也用做 nonce_str * @return */ public static String generateUUID() { return UUID.randomUUID().toString().replaceAll("-", "").substring(0, 32); } /** * 将List<{@link Object}>转换成List<{@link Map}> * * @param list * @return * @author TaoNingBo */ @SuppressWarnings("unchecked") public static List> fromToObject_M(List list) { List> t = new ArrayList>(); for (Object object : list) { t.add((Map) object); } return t; } /** * 将对象中的null转换为空 * @param obj * @return * @throws IllegalAccessException */ public static Object checkObjFieldIsNull(Object obj) throws IllegalAccessException { if(obj!=null){ for(java.lang.reflect.Field f : obj.getClass().getDeclaredFields()){ f.setAccessible(true); if(f.get(obj) == null){ if(f.getType()==String.class){ f.set(obj, ""); } if(f.getType()==Double.class){ f.set(obj, 0d); } if(f.getType()==Integer.class){ f.set(obj, 0); } if(f.getType()==Date.class){ f.set(obj, new Date()); } } } return obj; } return obj; } /** * 获取六位标识码 * @param length * @return */ public static String createRandomCharData() { StringBuilder sb=new StringBuilder(); Random rand=new Random();//随机用以下三个随机生成器 Random randdata=new Random(); int data=0; for(int i=0;i<6;i++) { int index=rand.nextInt(3); //目的是随机选择生成数字,大小写字母 switch(index) { case 0: data=randdata.nextInt(10);//仅仅会生成0~9 sb.append(data); break; case 1: data=randdata.nextInt(26)+65;//保证只会产生65~90之间的整数 sb.append((char)data); break; case 2: data=randdata.nextInt(26)+97;//保证只会产生97~122之间的整数 sb.append((char)data); break; } } String result=sb.toString().toLowerCase(); return result; } }