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

R语言如何实现半角字符串到全角格式字符串的转换

R语言半角字符串转全角字符串实现方案

完全可以通过十六进制Unicode编码映射实现该转换,{stringr}包可无缝接入开发流程,转换结果和标准全角转换工具输出完全一致。

核心转换原理

半角转全角的编码映射是Unicode标准定义的固定规则,不需要依赖外部接口:

  • 常规半角可见字符的Unicode编码范围为十六进制0x21(半角!)到0x7E(半角~),对应全角字符的编码范围为0xFF01到0xFF5E,两者固定偏移量为0xFEE0,半角编码加该偏移量即可得到对应全角编码
  • 特殊处理半角空格(编码0x20),其对应的全角空格编码为0x3000
  • 不在上述范围内的字符(比如中文、全角字符本身、特殊符号)转换时原样保留即可

代码实现

以下实现兼容{stringr}工作流,核心逻辑也可脱离包依赖独立运行:

# 加载stringr,若未安装可先运行 install.packages("stringr")
library(stringr)

half2full <- function(input_str) {
  # 获取字符串每个字符的Unicode编码值
  code_points <- utf8ToInt(input_str)
  
  # 按规则逐字符映射编码
  full_codes <- vapply(code_points, function(cp) {
    if (cp == 0x20) {
      # 半角空格转全角空格
      return(0x3000)
    } else if (cp >= 0x21 && cp <= 0x7E) {
      # 常规半角字符加固定偏移量转全角
      return(cp + 0xFEE0)
    } else {
      # 其他字符原样保留
      return(cp)
    }
  }, integer(1))
  
  # 将编码转回字符串输出
  intToUtf8(full_codes)
}

效果测试

针对示例输入运行函数:

test_input <- "my test string"
half2full(test_input)

运行输出为"my test string",和目标效果完全匹配:全角字母宽度一致,空格对应全角宽度,无字符错乱。

补充说明

  • 上述映射规则为通用标准规则,不存在和正规转换工具结果不一致的问题
  • 如果不想依赖{stringr},可以直接删除加载包的语句,核心转换逻辑仅用R基础函数即可运行,不需要任何第三方包
  • 若需要实现全角转半角的反向逻辑,只需将偏移计算反向,单独处理全角空格编码即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 16:18:20