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

如何为R语言toTitleCase()设置例外,保留指定单词大写?

解决R语言toTitleCase保留"the"大写的问题

针对你的需求,这里提供两种简单的解决思路:

方法一:先转标题格式再替换特定内容

先用tools::toTitleCase()处理字符串,再通过正则表达式把"v. the"替换为"v. The",刚好匹配你数据里的场景:

library(tools)

a <- c("Paul v. the man", "Molly v. the Bear")
df <- data.frame(a)

# 处理后生成新列
df$formatted <- gsub("v\\. the", "v. The", toTitleCase(df$a))

运行后df$formatted的结果就是:"Paul v. The Man"和"Molly v. The Bear",完全符合要求。

方法二:分割字符串分别处理

把原字符串按"v. "拆分成两部分,前半部分正常转标题格式,后半部分单独转标题格式(此时"the"处于开头位置,toTitleCase()会自动将其大写),最后再拼接起来:

library(tools)

a <- c("Paul v. the man", "Molly v. the Bear")
df <- data.frame(a)

# 自定义处理函数
custom_title <- function(text) {
  split_parts <- strsplit(text, "v\\. ")[[1]]
  part1 <- toTitleCase(split_parts[1])
  part2 <- toTitleCase(split_parts[2])
  paste0(part1, "v. ", part2)
}

# 批量处理数据框列
df$formatted <- sapply(df$a, custom_title)

这个方法更灵活,如果之后"v. "后面的内容有变化,也能保证开头单词首字母大写。

补充说明

tools::toTitleCase()的默认规则会把冠词(如the)、短介词等在句子中间的单词转为小写,这就是直接用它会把"the"变小写的原因。通过上面两种方式,就能绕过这个默认规则,实现你想要的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:02:01