package com.jpxx.admin.common.util;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Pattern;
public class Arith {
private static final int DEF_DIV_SCALE = 10;
public static String CITY_ID = "56775942199050240";
public static String CITY_NAME = "郑州市";
public final static Map<String,String> GOVERNWAYNAMEMAP = new HashMap() {{
put("0", "土石方外运");
put("1", "整理地形绿化");
put("2", "临时覆盖或绿化");
put("3", "待定");
}};
public final static Map<String,String> TYPESTR = new HashMap() {{
put("0", "工程弃土");
put("1", "混合垃圾(工程弃土和拆迁垃圾)");
put("2", "拆迁垃圾");
}};
/**
* 获取编号
* @param
* @return
*/
public synchronized static String getqynum(String flag,int singleResult){
//汇总表
Map<String, String> resultmap = new HashMap<>();
resultmap.put("sz",String.valueOf(singleResult));//获取编号数字
if(singleResult<10){
flag += "000"+singleResult;
}else if(singleResult<100){
flag += "00"+singleResult;
}else if(singleResult<1000){
flag += "0"+singleResult;
}else if(singleResult<10000){
flag += singleResult;
}
return flag;
}
/**
* * 两个Double数相加 *
*
* @param v1 *
* @param v2 *
* @return Double
*/
public static Double add(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return new Double(b1.add(b2).doubleValue());
}
/**
* * 两个Double数相减 *
*
* @param v1 *
* @param v2 *
* @return Double
*/
public static Double sub(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return new Double(b1.subtract(b2).doubleValue());
}
/**
* * 两个Double数相乘 *
*
* @param v1 *
* @param v2 *
* @return Double
*/
public static Double mul(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return new Double(b1.multiply(b2).doubleValue());
}
/**
* * 两个Double数相除 *
*
* @param v1 *
* @param v2 *
* @return Double
*/
public static Double div(Double v1, Double v2) {
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
return new Double(b1.divide(b2, DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP)
.doubleValue());
}
/**
* * 两个Double数相除,并保留scale位小数 *
*
* @param v1 *
* @param v2 *
* @param scale *
* @return Double
*/
public static Double div(Double v1, Double v2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(v1.toString());
BigDecimal b2 = new BigDecimal(v2.toString());
try {
return new Double(b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue());
} catch (Exception e) {
return 0d;
}
}
/**
* 把日期转换成不同格式的日期字符串
* yyyy-MM-dd HH:mm:ss
* format 1 yyyy-MM-dd HH:mm:ss 2yyyy-MM-dd 3yyyy-MM
* @param date
* @param format
* @return
*/
public static String getdateformat(Date date,int format){
String formatstr = "yyyy-MM-dd HH:mm:ss";
if(format==1){
formatstr = "yyyy-MM-dd HH:mm:ss";
}else if(format==2){
formatstr = "yyyy-MM-dd";
}else if(format==3){
formatstr = "yyyy-MM";
}
SimpleDateFormat df = new SimpleDateFormat(formatstr);
String datestr= df.format(date);
return datestr;
}
/**
* 把字符串日期 转换成日期
* yyyy-MM-dd HH:mm:ss
* format 1 yyyy-MM-dd HH:mm:ss 2yyyy-MM-dd 3yyyy-MM
* @param datestr
* @param format
* @return
*/
public static Date getdateformat(String datestr,int format){
String formatstr = "yyyy-MM-dd HH:mm:ss";
if(format==1){
formatstr = "yyyy-MM-dd HH:mm:ss";
}else if(format==2){
formatstr = "yyyy-MM-dd";
}else if(format==3){
formatstr = "yyyy-MM";
}
SimpleDateFormat df = new SimpleDateFormat(formatstr);
Date date= null;
try {
date = df.parse(datestr);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 根据当前日期月份获取前n个月
* @param n
* @return
*/
public static LinkedList<String> getFrontNMonth(int n){
LinkedList<String> result = new LinkedList<>();
for(int i=0;i<n;i++){
String afterNMonth = getAfterNMonth(i);
result.add(afterNMonth);
}
Collections.reverse(result);
return result;
}
/**
* 获取前n个月日期
* @param i
* @return
*/
public static String getAfterNMonth(int i){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.MONTH, -i);
Date m = c.getTime();
return sdf.format(m);
}
/**
* 如果不为空返回字符串类型 否则返回双引号空
* @param obj
* @return
*/
public static String getisnullthen(Object obj){
String result = "";
if(!StringUtils.isEmpty(obj)){
result =String.valueOf(obj);
}
return result;
}
/**
* 若果是null返回0
* @param obj
* @return
*/
public static String getisnullthennumber(Object obj){
String result = "0";
if(!StringUtils.isEmpty(obj)){
result =String.valueOf(obj);
}
return result;
}
/**
* 获取拼音
*/
public static String getPinyin(String str) {
String name = str;
char[] charArray = name.toCharArray();
StringBuilder pinyin = new StringBuilder();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
//设置大小写格式
defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
//设置声调格式:
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (int i = 0; i < charArray.length; i++) {
//匹配中文,非中文转换会转换成null
if (Character.toString(charArray[i]).matches("[\\u4E00-\\u9FA5]+")) {
String[] hanyuPinyinStringArray = new String[0];
try {
hanyuPinyinStringArray = PinyinHelper.toHanyuPinyinStringArray(charArray[i],defaultFormat);
} catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
badHanyuPinyinOutputFormatCombination.printStackTrace();
}
String string =hanyuPinyinStringArray[0];
pinyin.append(string);
} else {
pinyin.append(charArray[i]);
}
}
return pinyin.toString();
}
/**
* 拼音首字母
*/
public static String getPinyinszm(String str) {
String name = str;
char[] charArray = name.toCharArray();
StringBuilder pinyin = new StringBuilder();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
// 设置大小写格式
defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
// 设置声调格式:
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (int i = 0; i < charArray.length; i++) {
//匹配中文,非中文转换会转换成null
if (Character.toString(charArray[i]).matches("[\\u4E00-\\u9FA5]+")) {
String[] hanyuPinyinStringArray = new String[0];
try {
hanyuPinyinStringArray = PinyinHelper.toHanyuPinyinStringArray(charArray[i], defaultFormat);
} catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
badHanyuPinyinOutputFormatCombination.printStackTrace();
}
if (hanyuPinyinStringArray != null) {
pinyin.append(hanyuPinyinStringArray[0].charAt(0));
}
}
}
return pinyin.toString();
}
public static void main(String[] args) {
// String str = getPinyin("郑州市");
String[] strings = PinyinHelper.toHanyuPinyinStringArray("张".charAt(0));
System.out.println(strings[0]);
}
/*方法二:推荐,速度最快
* 判断是否为整数
* @param str 传入的字符串
* @return 是整数返回true,否则返回false
*/
public static boolean isInteger(String str) {
Pattern pattern = Pattern.compile("^\\d+(\\.\\d+)?");
return pattern.matcher(str).matches();
}
}
常用工具方法
最新推荐文章于 2022-08-17 16:24:51 发布