获取中文字符串首字母的高效方法

14 min read

以下是一个获取中文首字母的方法实现:

def get_chinese_first_letter(text: str) -> str:
    """
    获取中文字符串的首字母
    :param text: 中文字符串
    :return: 首字母,若为非中文则返回空字符串
    """
    if not isinstance(text, str):
        return ''
    if len(text) == 0:
        return ''

    code = ord(text[0])
    if 19968 <= code <= 40869:
        # 中文字符
        index = (code - 19968) // 94 + 1
        return chr(index + 64)
    elif (65 <= code <= 90) or (97 <= code <= 122):
        # 英文字符
        return text[0].upper()
    else:
        # 非中英文字符
        return ''

该方法的原理是根据中文GB2312编码表,将中文字符的Unicode码与其对应的首字母进行映射,然后根据Unicode码范围判断其是否为中文字符,并返回对应的首字母。对于非中文字符(包括非中英文字符),则返回空字符串。