import json
class StringHelper:

    @staticmethod
    def check_empty(s: str, default: str) -> str:
        """
        检查字符串是否为空
        """
        if s:
            return s
        return default

    @staticmethod
    def to_array(s: str, sep: str = ",") -> list[str]:
        """
        将字符串按指定分隔符分割成数组。

        :param s: 要分割的字符串。
        :param sep: 分隔符，默认为逗号。
        :return: 分割后的字符串数组。
        """
        if not s:
            return []
        if sep == ",":
            s = s.replace("，", ",")
        return s.split(sep)

    @staticmethod
    def e_startswith(s: str, prefix: str) -> str:
        """
        检查字符串是否以特定前缀开头，如果没有则补全。

        :param s: 要检查的字符串。
        :param prefix: 前缀。
        :return: 如果字符串以指定前缀开头，返回原字符串；否则返回补全后的字符串。
        """
        if not s.startswith(prefix):
            return prefix + s
        return s

    @staticmethod
    def e_endswith(s: str, suffix: str) -> str:
        """
        检查字符串是否以特定后缀结尾，如果没有则补全。

        :param s: 要检查的字符串。
        :param suffix: 后缀。
        :return: 如果字符串以指定后缀结尾，返回原字符串；否则返回补全后的字符串。
        """
        if not s.endswith(suffix):
            return s + suffix
        return s

    @staticmethod
    def split_and_clean(s: str, sep: str = ",") -> list[str]:
        """
        将字符串按指定分隔符分割并去除空字符串。

        :param s: 要分割的字符串。
        :param sep: 分隔符，默认为逗号。
        :return: 分割后的字符串数组，去除空字符串。
        """
        if not s:
            return []
        parts = StringHelper.to_array(s, sep)
        return [part.strip() for part in parts if part.strip()]

    @staticmethod
    def remove_extra_spaces(s: str) -> str:
        """
        将字符串中的多个连续空格替换为单个空格。

        :param s: 要处理的字符串。
        :return: 替换后的字符串。
        """
        return " ".join(s.split())

    @staticmethod
    def to_str(data:dict|list|tuple):
        return json.dumps(data, ensure_ascii=False)
    @staticmethod
    def is_email(s: str) -> bool:
        """
        验证字符串是否为有效的邮箱地址。

        :param s: 要验证的字符串。
        :return: 如果是有效的邮箱地址返回True，否则返回False。
        """
        import re
        pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
        return bool(re.match(pattern, s)) if s else False

    @staticmethod
    def is_phone(s: str) -> bool:
        """
        验证字符串是否为有效的手机号码（中国大陆手机号）。

        :param s: 要验证的字符串。
        :return: 如果是有效的手机号码返回True，否则返回False。
        """
        import re
        pattern = r'^1[3-9]\d{9}$'
        return bool(re.match(pattern, s)) if s else False
