package com.malk.utils;

import cn.hutool.core.util.ObjectUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

@Slf4j
public abstract class UtilString {


    // 避免str1为null触发空指针
    public static boolean equal(Object str1, Object str2) {
        return ObjectUtil.isNotNull(str1) && str1.equals(str2);
    }

    // 字符串拆分为集合按照英文逗号
    public static List stringSplitToList(String str) {
        String reg = ",";
        if (str.contains(", ")) reg = ", ";
        return Arrays.asList(str.split(reg));
    }

    // json序列化已经将空字符串过滤, 若转换还有null字符串, 可能是key为null或SerializerFeature未指定到类型, 如Date
    public static boolean isNotBlankCompatNull(String str) {
        return StringUtils.isNotBlank(str) && !str.equals("null");
    }

    public static boolean isBlankCompatNull(String str) {
        return !isNotBlankCompatNull(str);
    }

    // 字符串判断为空返回空字符串而不是null
    public static String stringFormatNull(Map<String, String> data, String key) {
        String str = data.get(key);
        if (StringUtils.isBlank(str)) return "";
        if (isBlankCompatNull(str)) return "";
        return str;
    }

    // 格式化保留两位小数
    public static String stringFormatFixed(Number value) {
        return String.format("%.2f", value);
    }

    // 中文圆括号转为英文圆括号 [参考: 常用Unicode字符对照表]
    public static String replaceBracketIsSemiangle(String value) {
        return value.replaceAll("\\u0028", "（").replaceAll("\\u0029", "）");
    }

    // 英文圆括号转为中文圆括号 [参考: 常用Unicode字符对照表]
    public static String replaceBracketIsWhole(String value) {
        return value.replaceAll("（", "(").replaceAll("）", ")");
    }

    // 格式刷日期, 去除年月日
    public static String replaceDateZH_cn(String date) {
        return date.replace("年", "-").replace("月", "-").replace("日", "");
    }
}
