// 按指定模式在字符串查找 String line = "全中文a"; String pattern = "^[\u4e00-\u9fa5]+$"; // 创建 Pattern 对象 Pattern r = Pattern.compile(pattern); // 现在创建 matcher 对象 Matcher m = r.matcher(line); System.out.println(m.matches());
分类: Java
BigDecimal计算
加法 a.add(b); 减法 a.subtract(b); 乘法 a.multiply(b); 除法 a.divide(b,需要精确到小数点以后几位,BigDecimal.ROUND_HALF_UP)
//* 保留位数、四舍五入 //1.直接去掉多余的位数 ROUND_DOWN BigDecimal a = new BigDecimal("1.234").setScale(2, BigDecimal.ROUND_DOWN); System.out.println(a);//1.23 //2.去掉多余的位数并进位 ROUND_UP BigDecimal b = new BigDecimal("1.234").setScale(2, BigDecimal.ROUND_UP); System.out.println(b);//1.24 //3.正数进位,负数舍位 ROUND_CEILING BigDecimal c = new BigDecimal("1.234").setScale(2, BigDecimal.ROUND_CEILING); System.out.println(c);//1.24 如果是正数,相当于BigDecimal.ROUND_UP BigDecimal d = new BigDecimal("-1.234").setScale(2, BigDecimal.ROUND_CEILING); System.out.println(d);//-1.23 如果是负数,相当于BigDecimal.ROUND_DOWN //4.正数舍位,负数进位 ROUND_FLOOR BigDecimal e = new BigDecimal("1.234").setScale(2, BigDecimal.ROUND_FLOOR); System.out.println(e);//1.23 如果是正数,相当于BigDecimal.ROUND_DOWN BigDecimal f = new BigDecimal("-1.234").setScale(2, BigDecimal.ROUND_FLOOR); System.out.println(f);//-1.24 如果是负数,相当于BigDecimal.ROUND_HALF_UP //5.四舍五入 (若舍弃部分>=.5,就进位)ROUND_HALF_UP BigDecimal g = new BigDecimal("1.225").setScale(2, BigDecimal.ROUND_HALF_UP); System.out.println(g); //1.23 //6.四舍五入(若舍弃部分>.5,就进位)ROUND_HALF_DOWN BigDecimal h = new BigDecimal("1.225").setScale(2, BigDecimal.ROUND_HALF_DOWN); System.out.println(h);//1.22 //7.ROUND_HALF_EVEN BigDecimal i = new BigDecimal("1.225").setScale(2, BigDecimal.ROUND_HALF_EVEN); System.out.println(i);//1.22 如果舍弃部分左边的数字为偶数,则作 ROUND_HALF_DOWN BigDecimal j = new BigDecimal("1.215").setScale(2, BigDecimal.ROUND_HALF_EVEN); System.out.println(j);//1.22 如果舍弃部分左边的数字为奇数,则作 ROUND_HALF_UP
java进制转换
//十进制转化为十六进制,结果为C8。 Integer.toHexString(200); //十六进制转化为十进制,结果140。 Integer.parseInt("8C",16);
SwitchItem
/** * 根据下划线字段转驼峰字段 * * @param item 下划线字段 * @return 驼峰字段 */ private String SwitchHump(String item) { while (true) { if (item.contains("_")) { int index = item.indexOf("_"); String value = item.substring(index + 1, index + 2); value = value.toUpperCase(); item = item.replace(item.substring(index, index + 2), value); } else { break; } } return item; } /** * 将驼峰转为下划线 * * @param item 驼峰字段 * @return 下划线字段 */ public String SwitchUnderline(String item) { String num = "0123456789"; String result = ""; for (int index = 0; index < item.length(); index++) { String value = item.substring(index, index + 1); if (num.contains(value)) { value = "_" + value; } else if (Character.isUpperCase(value.charAt(0))) { value = "_" + value.toLowerCase(); } result += value; } return result; }
Switch
/** * 将String转换为数组 * * @param value 数组格式String字符串 * @return 数组 */ public static String[] switchTo(String value) { return value.replace("[", "").replace("]", "").replaceAll(" ", "").split(","); } /** * 遍历数组返回字符串 * * @param values 数组 * @return 拼接的字符串 */ public static String switchToString(String[] values) { String result = ""; if (Util.notEmpty(values)) { for (String value : values) { result += ",'" + value + "'"; } result = result.replaceFirst(",", ""); } return result; } /** * 将String集合转化为BigDecimal集合 * * @param values String集合 * @return BigDecimal集合 */ public static List<BigDecimal> switchTo(String[] values) { List<BigDecimal> result = new ArrayList<>(); for (String value : values) { if (Util.notEmpty(value)) { BigDecimal bigDecimal = new BigDecimal(value); result.add(bigDecimal); } else { result.add(null); } } return result; } /** * 根据BigDecimal集合获取最大值 * * @param list BigDecimal集合 * @return 最大值 */ public static BigDecimal getMax(List<BigDecimal> list) { BigDecimal max = list.get(0); for (BigDecimal value : list) { if (value.subtract(max).doubleValue() > 0) { max = value; } } return max; } /** * 根据BigDecimal集合获取最小值 * * @param list BigDecimal集合 * @return 最小值 */ public static BigDecimal getMin(List<BigDecimal> list) { BigDecimal min = list.get(0); for (BigDecimal value : list) { if (value.subtract(min).doubleValue() < 0) { min = value; } } return min; } /** * 根据BigDecimal集合获取和 只计算正值 * * @param list BigDecimal集合 * @return 集合的和 */ public static BigDecimal getSum(List<BigDecimal> list) { BigDecimal sum = new BigDecimal(0); for (BigDecimal value : list) { if (value.doubleValue() > 0) { sum = sum.add(value); } } return sum; } /** * 根据开始时间结束时间及报表类型获取具体日期集合 * * @param from 开始时间 * @param to 结束时间 * @param period 报表类型 * @return 具体日期集合 */ public static String getTradingDates(int from, int to, String period) { String dates = ""; String[] periods = period.split(","); for (String p : periods) { for (int i = from; i < to; i++) { String date = ExcelUtil.getDateByPeriod(String.valueOf(i), p); if (!dates.contains(date)) { dates += ",'" + date + "'"; } } } dates = dates.replaceFirst(",", ""); return dates; } /** * 根据其他币种类型及金额转换为人民币 * * @param money 金额 * @param currency 币种代码 * @return 人民币金额 */ public static BigDecimal getRMBByOther(BigDecimal money, String currency) { if (money == null || money.toString().contains("-")) { return new BigDecimal("0"); } switch (currency) { case "RMB": return money.setScale(5, BigDecimal.ROUND_HALF_UP); case "USD": return money.multiply(new BigDecimal(6.617)).setScale(5, BigDecimal.ROUND_HALF_UP); case "HKD": return money.multiply(new BigDecimal(0.848)).setScale(5, BigDecimal.ROUND_HALF_UP); case "EUR": return money.multiply(new BigDecimal(7.82)).setScale(5, BigDecimal.ROUND_HALF_UP); case "YJP": return money.multiply(new BigDecimal(0.0585)).setScale(5, BigDecimal.ROUND_HALF_UP); case "KRW": return money.multiply(new BigDecimal(0.005855)).setScale(5, BigDecimal.ROUND_HALF_UP); case "CAD": return money.multiply(new BigDecimal(5.2983)).setScale(5, BigDecimal.ROUND_HALF_UP); case "GBP": return money.multiply(new BigDecimal(8.7232)).setScale(5, BigDecimal.ROUND_HALF_UP); case "AUD": return money.multiply(new BigDecimal(5.197)).setScale(5, BigDecimal.ROUND_HALF_UP); case "CHF": return money.multiply(new BigDecimal(6.7438)).setScale(5, BigDecimal.ROUND_HALF_UP); case "SGD": return money.multiply(new BigDecimal(4.873)).setScale(5, BigDecimal.ROUND_HALF_UP); case "TWD": return money.multiply(new BigDecimal(0.2189)).setScale(5, BigDecimal.ROUND_HALF_UP); } return null; }
DateUtil
/** * 获取当前时间的前 day天的日期 * * @param day 天数 * @return 字符串格式的前一天日期 */ public static Date getBeforeDate(int day) { Date date = new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DATE, -day); return calendar.getTime(); } /** * 获取某日期距离今天的天数 * * @param date 日期 * @return 天数 */ public static int getDateToDay(Date date) { Date day = new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(day); int newday = calendar.get(Calendar.DAY_OF_YEAR); calendar.setTime(date); return newday - calendar.get(Calendar.DAY_OF_YEAR); } /** * 根据date返回字符串日期 * * @param date 日期 * @return 字符串类型日期 */ public static String getStringDate(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(date); } /** * 根据date和格式化类型转换格式 * * @param date date * @param format 格式化类型 * @return 格式类型的时间 */ public static String getStringDate(Date date, String format) { SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.format(date); } /** * date转string * * @param date date * @return string * @throws Exception 转换异常 */ public static Date getDateByString(String date) throws Exception { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.parse(date); } /** * 判断字符串是否能够转成日期类型 * * @param date 待检测字符串 * @return 检测结果 */ public static boolean getDateByStringExist(String date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { sdf.parse(date); return true; } catch (ParseException e) { return false; } } /** * 判断字符串是否能够转成日期类型 * * @param date 待检测字符串 * @return 检测结果 */ public static boolean getDateByStringExist(String date, String format) { SimpleDateFormat sdf = new SimpleDateFormat(format); try { sdf.parse(date); return true; } catch (ParseException e) { return false; } }