加减乘除工具类

package com.zhwg.core.tool;

import java.math.BigDecimal;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.lang.StringUtils;

public class StringUtil {

/**
 * 减法
 * @param total
 * @param current
 * @return
 */
public static String subtraction(String total,String current){
	try{
		double tt = 0.0;
		double cc = 0.0;
		try{
			tt = Double.parseDouble(total);
		}catch(Exception e){
		}
		try{
			cc = Double.parseDouble(current);
		}catch(Exception e){
		}
		return String.valueOf(tt-cc);
	}catch(Exception e){
		return "";
	}

}
/**
 * 加法
 * @param total
 * @param current
 * @return
 */
public static String add(String total,String current){
	try{
		double tt = 0.0;
		double cc = 0.0;
		try{
			tt = Double.parseDouble(total);
		}catch(Exception e){
		}
		try{
			cc = Double.parseDouble(current);
		}catch(Exception e){
		}
		return String.valueOf(tt+cc);
	}catch(Exception e){
		return "";
	}

}

/**
 * 乘法
 * @param one
 * @param two
 * @return
 */
public static String multiplication(String one,String two){
	try{
		double tt = 0.0;
		double cc = 0.0;
		try{
			tt = Double.parseDouble(one);
		}catch(Exception e){
		}
		try{
			cc = Double.parseDouble(two);
		}catch(Exception e){
		}
		return String.valueOf(tt * cc);
	}catch(Exception e){
		return "";
	}
}

/**
 * 除法
 * @param all
 * @param complate
 * @return
 */
public static String division(String all,String complate){
	try{
		double tt = 0.0;
		double cc = 0.0;
		try{
			tt = Double.parseDouble(all);
		}catch(Exception e){
		}
		try{
			cc = Double.parseDouble(complate);
		}catch(Exception e){
		}
		if(tt==0.0){
			return null;
		}else{
		
		return String.valueOf(cc / tt);
		}
	}catch(Exception e){
		return "0";
	}
}

public static String getDecimal(String source,int length){
	if(source == null){
		return "0";
	}
	if(source.indexOf(".") > -1){
		String intger = source.split("\\.")[0];
		String end = source.split("\\.")[1];
		if(end != null && end.length() > length){
			end = end.substring(0,length);
		}
		return intger+"."+end;
	}
	return source;
}

public static void main(String[] a){
	//System.out.println(getDecimal("1.1234sad5",3));
	/*System.out.println(getStrClcj("-10.45","11"));
	System.out.println(getStrClcj("-11","11"));*/
	System.out.println(getCode("08标"));
}

public static String getPercentage(String numerator, String fraction) {
	try{
		double n = 0.0;
		double f = 1.0;
		try{
			n = Double.parseDouble(numerator);
		}catch(Exception e){
		}
		try{
			f = Double.parseDouble(fraction);
		}catch(Exception e){
		}
		return getDecimal(String.valueOf(n / f * 100),3);
	}catch(Exception e){
		return "0";
	}
}

/**
 * 获取行数
 * @param data
 * @return
 */
public static int getAllLine(String data){
	String str = dealNull(data);
	String[] array = str.split("\n");
	return array.length;
}
/**
 * 获取行数
 * @param data
 * @return
 */
public static int getAllLine(Object data){
	String str = dealNull(data);
	String[] array = str.split("\n");
	return array.length;
}
/**
 * 获取行数
 * @param data
 * @return
 */
public static int getLine(Object data) {
	String str = dealNull(data);
	String[] array = str.split("\n");
	int length = array.length;
	int num = length;
	for (int i = 0; i < length; i++) {
		int arylength = array[i].length();
		if (arylength > 50) {
			num = num + arylength / 50;
		}
	}
	return num;
}

/**
 * 处理上传空格-换行
 * @param data
 * @return
 */
public static String dealSpace(String data){
	String ret = data;
	if(StringUtils.isBlank(ret) || "null".equals(ret)){
		return "";
	}
	return ret.replaceAll(" ", "").replaceAll("\n","").replaceAll("\r", "");
}

public static String convertString(Object value) {
	if (value == null) {
		return "";
	} else {
		return value.toString();
	}
}

public static String dealNull(Object data){
	String ret = String.valueOf(data);
	if(StringUtils.isBlank(ret) || "null".equals(ret)){
		return "";
	}
	return ret;
}

public static String dealSpace(Object data){
	String ret = String.valueOf(data);
	if(StringUtils.isBlank(ret) || "null".equals(ret)){
		return "";
	}
	return ret.replaceAll(" ", "").replaceAll("\n","");
}

/**
 * 去掉特殊字符
 * "[`~!@#$%^&*()+-=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]"
 * @param data
 * @return
 */
public static String dealSpecial(Object data){
	String ret = String.valueOf(data);
	if(StringUtils.isBlank(ret) || "null".equals(ret)){
		return "";
	}
	ret = ret.replaceAll("_", "");
	ret = ret.replaceAll("-", "");
	String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]"; 
	Pattern p = Pattern.compile(regEx); 
	Matcher m = p.matcher(ret);
	return m.replaceAll("").trim();
}

/**
 * String转number
 * @param num 1-取1位小数,2-取2位小数
 * @param str 
 * @return
 */
public static String getStringNumber(int num,Object data){
	try{
		String str = String.valueOf(data);
		if(StringUtils.isNotBlank(str) && !"null".equals(str)){
			BigDecimal bd = new BigDecimal(str);
			return bd.setScale(num, BigDecimal.ROUND_HALF_UP).toString();
		}
		return "0";
	}catch(Exception e){
		return "0";
	}
}

/**
 * String转number
 * @param num 1-取1位小数,2-取2位小数
 * @param str 
 * @return
 */
public static String getStringNumber2(int num,Object data){
	try{
		String str = String.valueOf(data);
		if(StringUtils.isNotBlank(str) && !"null".equals(str)){
			BigDecimal bd = new BigDecimal(str);
			return bd.setScale(num, BigDecimal.ROUND_HALF_UP).toString();
		}
		return "";
	}catch(Exception e){
		return "";
	}
}
/**
 * String转number 
 * @param num 保留小数位数
 * @param bd 大数字
 * @return
 */
public static String getStringNumber(int num, BigDecimal bd){
	return bd.setScale(num, BigDecimal.ROUND_HALF_UP).toString();
}

/**
 * 上传excel 项目编码出现精度问题调整
 * @param num  1-取1位小数,2-取2位小数
 * @param str 4.4000000000000004  4.0999999999999996
 * @return
 */
public static String getStringXmbm(int num,String str){
	if(StringUtils.isNotBlank(str)){
		if(str.indexOf("999999")>0 || str.indexOf("000000")>0){
			BigDecimal bd = new BigDecimal(str);
			return bd.setScale(num, BigDecimal.ROUND_HALF_UP).toString();
		}
	}
	return str;
}

public static double getDoubleNum(int num,Double d) {
	try{
		BigDecimal bg = new BigDecimal(d);  
		return bg.setScale(num, BigDecimal.ROUND_HALF_UP).doubleValue();  
	}catch(Exception e){
		e.printStackTrace();
		return 0;
	}
}


/**
 * 数据字符处理
 * @param str 数字型
 * @return  非空去掉空格,空返回“0.00”
 */
public static String isNotBlankTrim(String str){
	if(StringUtils.isNotBlank(str) && !"null".equals(str)){
		return str.trim();
	}else{
		return "0";
	}
}

/**
 * 数据字符处理
 * @param str 数字型
 * @return  非空去掉空格,空返回“0.00”
 */
public static String isNotBlankTrim(Object str){
	String str1 = String.valueOf(str);
	return isNotBlankTrim(str1);
}

/**
 * 获取字符串行数
 * @param str
 * @return
 */
public static int getRowsNum(String str){
	if(StringUtils.isNotBlank(str)){
		String[] array = str.split("\n");
		return array.length;
	}
	return 0;
}

/**
 * 获取字符串中的中文字符串
 * @param str
 * @return
 */
public static String getCodeCN(String str){
	String regEx = "[\\u4e00-\\u9fa5]";
	Pattern p = Pattern.compile(regEx);
	Matcher m = p.matcher(str);
	StringBuffer reStr = new StringBuffer();
	while (m.find()) {
		reStr.append(m.group());
	}
	return reStr.toString();
}
/**
 * 获取字符串中的非中文字符串
 * 从第一位是字母的开始截取
 * @param str 
 * @return
 */
public static String getCode(String str){
    StringBuffer sb = new StringBuffer();
    if(StringUtils.isNotBlank(str)){
    	for (int i = 0; i < str.length(); i++) {
    		if ((str.charAt(i)+"").getBytes().length==1) {
    			if(sb.length()==0 && isAsciiLetter(str.charAt(i))){
    				sb.append(str.charAt(i));
    			}else if(sb.length()>0){
    				sb.append(str.charAt(i));
    			}
    		}
    	}
    }
    return sb.toString();
}

private static boolean isAsciiLetter(char c) {
    return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9');
}

/**
 * 获取标段数据
 * @param str
 * @return
 */
public static String getCodeNum(String str){
    StringBuffer sb = new StringBuffer();
    if(StringUtils.isNotBlank(str)){
    	String str2 = str.split("-")[1];
    	for (int i = 0; i < str2.length(); i++) {
    		if ((str2.charAt(i)+"").getBytes().length==1) {
				sb.append(str2.charAt(i));
    		}
    	}
    }
    return sb.toString();
}

/**
 * 补充位数,不够的在前面补0
 * @param num 总共需要位数
 * @param str 需要补充的字符
 * @return
 */
public static String getStrCode(int num,Object str){
	if(null != str && !"null".equals(str)){
		String reStr = String.valueOf(str);
		int len = reStr.length();
		if(num>len){
			for(int i=len;i<num;i++){
				reStr = "0"+reStr;
			}
		}
		return reStr;
	}
	return "";
}

public static String qryQsxx(String qsxx,int n){
	if(StringUtils.isNotBlank(qsxx)){
		int num = Integer.valueOf(qsxx) + n;
		return getStrCode(3, num);
	}
	return "001";
}
/**
 *  本期调整材料差价
 * 材料调整
 * |13|<=14 15=0; |13|>14,13>0 15=13-14; |13|>14,13<0 15=13+14
 * @param pjjgjc 13
 * @param tzfd  14
 * @return
 */
public static String getStrClcj(String pjjgjc,String tzfd){
	try{
		double p1 = Double.parseDouble(pjjgjc);
		double p = Math.abs(p1);
		double t = Double.parseDouble(tzfd);
		if(t >= p){//|13|<=14 15=0
			return "0";
		}else {
			if(p1>0){ //|13|>14,13>0 15=13-14
				return getStringNumber(2, StringUtil.subtraction(pjjgjc,tzfd));
			}else{//|13|>14,13<0 15=13+14
				return getStringNumber(2, StringUtil.add(pjjgjc,tzfd));
			}
		}
	}catch(Exception e){
		return "0";
	}
}
//只适用于日期格式字符 yyyy-MM-DD
public static String getYearMonth(String ksrq,String jsrq){
	try{
		String year = getYear(ksrq);
		String month = getMonth(ksrq) + "-" + getMonth(jsrq);
		return year +" 年 "+ month +" 月";
	}catch(Exception e){
		return "";
	}
}
//只适用于日期格式字符 yyyy-MM-DD
public static String getYear(String str){
	try{
		return str.split("-")[0];
	}catch(Exception e){
		return "";
	}
}
//只适用于日期格式字符 yyyy-MM-DD
public static String getMonth(String str){
	try{
		return str.split("-")[1];
	}catch(Exception e){
		return "";
	}
}

/**
 * 根据单位获取保留小数位数
 * @param jldw
 * @return
 */
public static int getNumDoul(String jldw){
	try{
		if("m".equals(jldw) || "m2".equals(jldw) || "m3".equals(jldw)
        		|| "㎡".equals(jldw) || "m³".equals(jldw)){
			return 2;
        }else if("kg".equals(jldw) || "t".equals(jldw) 
        		|| "KG".equals(jldw) || "T".equals(jldw)){
        	return 3;
        }
		return 2;
	}catch(Exception e){
		return 0;
	}
}

public static String changeUnit(String unit){
	String str = dealSpace(unit);
	if("m2".equals(str)){
		str = "㎡";
	}else if("m3".equals(str)){
		str = "m³";
	}else if("T".equals(str)){
		str = "t";
	}else if("KG".equals(str)){
		str = "kg";
	}
	return str;
}

/**
 * 进行乘法运算
 * @param d1
 * @param d2
 * @return
 */
public static BigDecimal mul(double d1, double d2) { // 
	BigDecimal b1 = new BigDecimal(d1);
	BigDecimal b2 = new BigDecimal(d2);
	return b1.multiply(b2);
}

/**
 * 进行乘法运算
 * @param d1
 * @param d2
 * @return
 */
public static BigDecimal mul(String d1, String d2) { // 
	BigDecimal b1 = new BigDecimal(d1);
	BigDecimal b2 = new BigDecimal(d2);
	return b1.multiply(b2);
}

public static String delHTMLTag(String htmlStr){ 
    String regEx_script="<script[^>]*?>[\\s\\S]*?<\\/script>"; //定义script的正则表达式 
    String regEx_style="<style[^>]*?>[\\s\\S]*?<\\/style>"; //定义style的正则表达式 
    String regEx_html="<[^>]+>"; //定义HTML标签的正则表达式 
    //String regEx_space = "\\s*|\t|\r|\n";//定义空格回车换行符  
    
    Pattern p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);  
    Matcher m_script = p_script.matcher(htmlStr);  
    htmlStr = m_script.replaceAll(""); // 过滤script标签  

    Pattern p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);  
    Matcher m_style = p_style.matcher(htmlStr);  
    htmlStr = m_style.replaceAll(""); // 过滤style标签  

    htmlStr = htmlStr.replaceAll("</p>", "\n </p>");
    
    Pattern p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);  
    Matcher m_html = p_html.matcher(htmlStr);  
    htmlStr = m_html.replaceAll(""); // 过滤html标签  

   /* Pattern p_space = Pattern.compile(regEx_space, Pattern.CASE_INSENSITIVE);  
    Matcher m_space = p_space.matcher(htmlStr);  
    htmlStr = m_space.replaceAll(""); // 过滤空格回车标签  
    */        
    htmlStr = htmlStr.replaceAll("&nbsp;", "");
    
    return htmlStr.trim(); // 返回文本字符串
} 

public static Set<String> qryMonthSet(String ksrq,String jsrq) throws Exception{
	Set<String> setStr = Collections.synchronizedSet(new LinkedHashSet<String>()); 
	if(StringUtils.isNotBlank(ksrq) && StringUtils.isNotBlank(jsrq)){
		String year = StringUtil.getYear(ksrq);
		int start = Integer.valueOf(StringUtil.getMonth(ksrq));
		int end = Integer.valueOf(StringUtil.getMonth(jsrq));
		for(int i=start;i<end+1;i++){
			setStr.add(year+"-"+StringUtil.getStrCode(2,i));
		}
	}
	return setStr;
}
/**
 * 数字比较 
 * @param str1
 * @param str2
 * @return  str1>str2 返回1;str1<str2 返回-1;str1=str2 返回0
 */
public static int compareTo(String str1,String str2){
	try{
		String t1 = dealSpace(str1);
		String t2 = dealSpace(str2);
		if(StringUtils.isNotBlank(t1) && StringUtils.isNotBlank(t2)){
			BigDecimal bd = new BigDecimal(t1);
			return bd.compareTo(new BigDecimal(t2));
		}else if(StringUtils.isNotBlank(t1) && StringUtils.isBlank(t2)){
			return 1;
		}else if(StringUtils.isBlank(t1) && StringUtils.isNotBlank(t2)){
			return -1;
		}
	}catch (Exception e) {
		return 0;
	}
	return 0;
} 

/**
 * 0-特殊处理(当数据为0史返回空)
 * @param val
 * @return
 */
public static String dealZero (String val){
	String str = dealSpace(val);
	int num = compareTo(str, "0");
	if(num==0){
		return "";
	}
	return str;
}

/**
 * 0-特殊处理(当数据为0史返回空)
 * @param val
 * @return
 */
public static String dealZero (Object val){
	String str = dealSpace(val);
	int num = compareTo(str, "0");
	if(num==0){
		return "";
	}
	return str;
}

/**
 * 将小写1转成大写一
 * @param input
 * @return
 */
public static String NumberToChinese(String input){   
    String s1="一二三四五六七八九";   
   // String s4="分角整元拾佰仟万拾佰仟亿拾佰仟";   
    String temp="";   
    String result="";   
    if (input==null) return "输入的字串不是数字串只能包括以下字符('0'~'9','.'),输入字串最大只能精确到仟亿,小数点只能两位!";   
    temp=input.trim();   
    float f;   
    try{   
        f=Float.parseFloat(temp);   
    }catch(Exception e){   
        return "输入的字串不是数字串只能包括以下字符('0'~'9','.'),输入字串最大只能精确到仟亿,小数点只能两位!";   
    }   
    int len=0;   
    if(temp.indexOf(".")==-1) len=temp.length();   
    else len=temp.indexOf(".");   
    //if(len>s4.length()-3) return("输入字串最大只能精确到仟亿,小数点只能两位!");   
    int n1=0;   
    String num="";   
    String unit="";   
    for(int i=0;i<temp.length();i++){   
        if(i>len+2){break;}   
        if(i==len) {continue;}   
        n1=Integer.parseInt(String.valueOf(temp.charAt(i)));   
        num=s1.substring(n1-1,n1);   
        n1=len-i+2;   
       // unit=s4.substring(n1,n1+1);   
        result=result.concat(num).concat(unit);   
    }   
    //if((len==temp.length())||(len==temp.length()-1)) result=result.concat("整");   
    //if(len==temp.length()-2) result=result.concat("零分");   
    return result;   
}   

}

发布了37 篇原创文章 · 获赞 10 · 访问量 3万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览