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

如何在R中编写实现大小写字母互相转换的自定义函数

R语言大小写互转自定义函数实现方案

R本身自带tolower()、toupper()两个基础大小写转换函数,基于这两个函数封装即可实现大小写互转,下面提供两种常用实现思路:

方法1:逐字符判断转换(逻辑易懂,适合短文本)

逐个拆分字符串的单个字符,判断原有字符的大小写状态后反向转换,非英文字母的数字、符号、中文等内容保持不变:

case_swap <- function(input_str) {
  # 将输入字符串拆分为单个字符的向量
  char_vec <- strsplit(input_str, "")[[1]]
  # 逐位判断转换:原本大写转小写,原本小写转大写
  swapped_vec <- ifelse(
    char_vec == toupper(char_vec),
    tolower(char_vec),
    toupper(char_vec)
  )
  # 把转换后的字符向量拼接回完整字符串
  paste(swapped_vec, collapse = "")
}

测试示例

  • 输入case_swap("HeLLo WoRLd 123!"),输出结果为hEllO wOrlD 123!
  • 输入case_swap("R语言AbC@#"),输出结果为r语言aBc@#

方法2:正则替换实现(性能更高,适合长文本)

借助Perl正则的大小写替换语法,避免逐字符遍历,处理长文本时速度优势明显:

case_swap_fast <- function(input_str) {
  # 先给所有大写字母加临时标记后转小写,避免后续替换冲突
  temp <- gsub("([A-Z])", "~\\L\\1", input_str, perl = TRUE)
  # 把剩余的原生小写字母转大写
  temp <- gsub("([a-z])", "\\U\\1", temp, perl = TRUE)
  # 清除临时标记得到最终结果
  gsub("~", "", temp, fixed = TRUE)
}

注意:如果需要处理带重音的拉丁语系特殊字母,只需将正则的匹配范围替换为Unicode大小写字母区间即可,原有其他字符的保留规则不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:27:01