package com.dxhy.core.util;

import com.dxhy.common.util.StringHelper;
import org.apache.commons.lang3.StringUtils;

/**
 * @ClassName StringUtil
 * @Description 处理字符串方法
 * @Author wangruwei
 * @Date 2024/4/19 11:30
 * @Version 1.0
 */
public class StringUtil {

    /**
    * @Description 税率 小数点转换为百分比显示  0.13 转化为  13%
    * @Author wangruwei
    * @Date 2024/4/19 11:31
    **/
    public static String slDecimalToBfj(String decimal){
        if(StringUtils.isEmpty(decimal)){
            return "";
        }else{
            if (StringHelper.trimEnter(decimal).matches("[0-9]+")) {
                return StringHelper.trimEnter(decimal) + "%";
            } else if((StringUtils.isEmpty(decimal)?"":decimal).contains(".")){
                String taxRate = StringHelper.trimEnter(decimal);
                if(taxRate.contains(".")){
                    taxRate = taxRate.replace(".", "").replace("0", "");
                }
                return taxRate + "%";
            }else {
                return StringHelper.trimEnter(decimal);
            }
        }
    }

    /**
     * 将税率转换为小数形式的方法，并以字符串类型返回
     *
     * @param taxRateInput 可以是百分数形式（如 "13%"）或者整数形式（如 13）的税率表示
     * @return 转换后的小数形式税率的字符串表示，例如输入 "13%" 或 13 都返回 "0.13"，输入 "5%" 返回 "0.05"
     */
    public static String slBfjToDecimal(String taxRateInput) {
        if (StringUtils.isBlank(taxRateInput)) {
            return taxRateInput;
        }
        taxRateInput = taxRateInput.trim();
        if (taxRateInput.endsWith("%")) {
            // 如果是百分数形式，去掉百分号后转换为double类型再除以100，最后格式化为字符串
            String numberPart = taxRateInput.substring(0, taxRateInput.length() - 1);
            double rate = Double.parseDouble(numberPart) / 100;
            return String.format("%.2f", rate);
        }
        // 如果不是百分数形式，直接尝试转换为double类型，再格式化为字符串
        double rate = Double.parseDouble(taxRateInput) / 100;
        return String.format("%.2f", rate);
    }

}
