package com.ecep.contract.util;

import org.springframework.util.StringUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * 我的字符串工具箱
 */
public class MyStringUtils {
    /**
     * 把 append 拼接到 description 后面，如果 append 不在 description 内时
     *
     * @param description 被拼接的字符串
     * @param append      要拼接的内容
     * @return 拼接后的字符串
     */
    public static String appendIfAbsent(String description, String append) {
        if (StringUtils.hasText(append)) {
            if (description != null && !description.contains(append)) {
                return description + ", " + description;
            }
        }
        return description;
    }

    /**
     * 检查字符串中的每个字符，是否都是数字 {@link Character#isDigit(char)}
     *
     * @param str 要检查的字符串
     * @return 含有非字符串返回false，否则返回true
     */
    public static boolean isAllDigit(String str) {
        if (!StringUtils.hasText(str)) {
            return false;
        }
        for (byte aByte : str.getBytes()) {
            if (!Character.isDigit(aByte)) {
                return false;
            }
        }
        return true;
    }

    public static long toLong(String string, long defaultValue) {
        if (!StringUtils.hasText(string)) {
            return defaultValue;
        }

        try {
            return Long.parseLong(string);
        } catch (NumberFormatException e) {
            return defaultValue;
        }
    }

    /**
     * 分割字符串
     *
     * @param str   要分割的字符串
     * @param regex 要分割的字符
     * @return 分割后的字符集合
     */
    public static List<String> split(String str, String regex) {
        List<String> list = new ArrayList<>();
        // 未含有字符时，直接返回空集合
        if (!StringUtils.hasText(str)) {
            return list;
        }
        // 按照指定字符分割字符串
        String[] parts = str.split(regex);
        for (String part : parts) {
            if (StringUtils.hasText(part)) {
                list.add(part);
            }
        }
        return list;
    }
}
