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

str_to系列函数扩展需求:支持保留指定缩写词的大小写格式

R 字符串大小写转换保留指定缩写的实现方法

针对大小写转换时指定缩写保持全大写的需求,可通过以下两种方案实现:


方案1:自定义轻量转换函数(仅依赖stringr)

适合自定义程度高的场景,可灵活适配单个单词、多词句子的转换需求:

library(stringr)

# 1. 预先定义需要保留全大写的缩写列表
acronyms <- c("nyc", "la")
acronyms_low <- tolower(acronyms)

# 2. 单单词场景转换函数
str_to_title_with_acronym <- function(x, acronyms_low) {
  sapply(x, function(s) {
    s_low <- tolower(s)
    if (s_low %in% acronyms_low) {
      return(toupper(s))
    }
    str_to_title(s)
  }, USE.NAMES = FALSE)
}

# 测试效果
x <- c("nyc", "buffalo", "la", "raleigh", "richmond")
str_to_title_with_acronym(x, acronyms_low)
#> [1] "NYC"      "Buffalo"  "LA"       "Raleigh"  "Richmond"

如果需要处理包含多个单词的长字符串,可使用如下适配版本:

# 多词句子场景转换函数
str_to_title_sentence <- function(s, acronyms_low) {
  words <- str_split(s, "\\s+")[[1]]
  processed <- sapply(words, function(w) {
    w_low <- tolower(w)
    if (w_low %in% acronyms_low) toupper(w) else str_to_title(w)
  }, USE.NAMES = FALSE)
  paste(processed, collapse = " ")
}

# 测试效果
x2 <- c("nyc flight data", "la monthly report")
sapply(x2, str_to_title_sentence, acronyms_low = acronyms_low, USE.NAMES = FALSE)
#> [1] "NYC Flight Data"    "LA Monthly Report"

方案2:使用janitor包内置功能(适合表格列名处理场景)

如果是处理表格列名这类场景,可直接使用janitor包的make_clean_names函数,内置缩写保留参数:

library(janitor)

x <- c("nyc", "buffalo", "la", "raleigh", "richmond")
make_clean_names(x, case = "title", acronyms = c("NYC", "LA"))
#> [1] "NYC"      "Buffalo"  "LA"       "Raleigh"  "Richmond"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:48:04