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

如何用R将斜体、粗体等特殊Unicode字符转换为普通字符

解决方案

你可以使用R的stringi包内置的Unicode文本归一化功能实现转换,它支持直接匹配所有粗体、斜体、手写体等特殊格式的Unicode字母,自动映射为普通ASCII字母,不需要手动写替换规则。

步骤1:安装并加载依赖包

# 未安装的话先执行安装
install.packages("stringi")
library(stringi)

步骤2:执行转换

直接调用stri_trans_general函数,指定转换规则为"Any-Latin; Latin-ASCII"即可:

# 你的原始字符串
string <- "Blah blah \U0001d617\U0001d622\U0001d63a\U0001d633\U0001d630\U0001d62d\U0001d62d \U0001d61a\U0001d631\U0001d626\U0001d624\U0001d62a\U0001d622\U0001d62d\U0001d62a\U0001d634\U0001d635 blah blah"

# 转换处理
result <- stri_trans_general(string, "Any-Latin; Latin-ASCII")

# 输出结果验证
print(result)

运行后输出就是你需要的普通文本:

[1] "Blah blah Payroll Specialist blah blah"

规则说明

  • Any-Latin:会把所有Unicode体系里的拉丁字母变体(包括粗体、斜体、花体、黑形体等所有特殊格式的字母)统一转换为标准拉丁字母
  • Latin-ASCII:进一步把带重音、变音符号的拉丁字母转换为对应的纯ASCII字母,兼容更多特殊场景

可选无第三方包方案

如果不想依赖外部包,可以手动映射Unicode字符块转换,缺点是需要自行覆盖所有变体块,维护成本较高,仅作为参考:

convert_unicode_letter <- function(s) {
  chars <- strsplit(s, "")[[1]]
  converted <- sapply(chars, function(c) {
    code <- utf8ToInt(c)
    # 数学斜体大写A-Z映射
    if (code >= 0x1D434 && code <= 0x1D44D) return(intToUtf8(code - 119795))
    # 数学斜体小写a-z映射
    if (code >= 0x1D44E && code <= 0x1D467) return(intToUtf8(code - 119789))
    # 其他粗体、花体等Unicode块可按对应码位偏移补充规则
    return(c)
  })
  paste(converted, collapse = "")
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:18:04