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

如何用R语言str_replace拆分字符串单词且不删除原有字符?

解决方案:用正则捕获组保留原字符实现单词拆分

直接上可运行的代码:

library(stringr)

s1 <- c("Employee_Name", "EmpID", "MarriedID", "MaritalStatusID", "GenderID", 
        "EmpStatusID")

# 先移除下划线,再在大小写衔接处加空格
result <- s1 %>%
  str_remove_all("_") %>%
  str_replace_all("([a-z])([A-Z])", "\\1 \\2")

print(result)

运行后输出:

[1] "Employee Name"       "Emp ID"              "Married ID"         
[4] "Marital Status ID"   "Gender ID"           "Emp Status ID"

关键逻辑说明

你之前的问题出在正则替换时没有保留匹配到的字符,改用捕获组+反向引用就能解决:

  • str_remove_all("_"):这一步和你原来的操作一致,直接清除所有下划线。
  • str_replace_all("([a-z])([A-Z])", "\\1 \\2"):
    • 正则表达式里的([a-z])和([A-Z])分别捕获小写字母和紧跟其后的大写字母,形成两个独立的捕获组。
    • 替换时用\\1调用第一个捕获组的内容(小写字母),\\2调用第二个捕获组的内容(大写字母),中间插入空格,这样就不会丢失任何原有字符,只是在大小写衔接的地方添加了空格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 12:27:11