You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Facebook粗体字符与普通字符不匹配的代码匹配方案咨询

解决Facebook粗体字符与普通字符的匹配问题

那些看起来是粗体的字符,本质是Unicode中的数学粗体字符,和普通ASCII字符的编码完全不同——比如粗体的𝗧编码是U+1D427,而普通的T是U+0054,所以直接用字符串匹配肯定找不到结果。

要实现两者匹配,核心思路是把粗体字符串转换成普通字符格式,再进行匹配。以下是原生Python的实现方案:

def convert_bold_unicode_to_normal(bold_text):
    converted = []
    for char in bold_text:
        # 处理数学粗体大写字母(Unicode范围:U+1D400 至 U+1D433)
        if ord('\U0001D400') <= ord(char) <= ord('\U0001D433'):
            converted.append(chr(ord(char) - ord('\U0001D400') + ord('A')))
        # 处理数学粗体小写字母(Unicode范围:U+1D434 至 U+1D467)
        elif ord('\U0001D434') <= ord(char) <= ord('\U0001D467'):
            converted.append(chr(ord(char) - ord('\U0001D434') + ord('a')))
        # 处理数学粗体数字(Unicode范围:U+1D7CE 至 U+1D7D7)
        elif ord('\U0001D7CE') <= ord(char) <= ord('\U0001D7D7'):
            converted.append(chr(ord(char) - ord('\U0001D7CE') + ord('0')))
        # 非粗体字符(如空格)直接保留
        else:
            converted.append(char)
    return ''.join(converted)

# 测试转换与匹配
bold_str = '𝗧𝗵𝗮𝗶𝗹𝗮𝗻𝗱 𝗦𝗺𝗮𝗿𝘁 𝗖𝗶𝘁𝘆 𝗘𝘅𝗽𝗼 𝟮𝟬𝟮𝟮'
normalized_str = convert_bold_unicode_to_normal(bold_str)
print(normalized_str)  # 输出: Thailand Smart City Expo 2022

# 现在可以正常执行匹配
match_pos = normalized_str.find("Thailand Smart City")
print(match_pos)  # 输出: 0

这个方法通过计算Unicode编码的偏移量,把数学粗体的字母、数字转换成对应的普通字符。如果你的场景中还有其他类型的粗体变体,可以扩展函数中的字符范围判断。

内容的提问来源于stack exchange,提问作者somphon rueangsri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 03:50:19