如何用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
相关产品推荐
相关产品推荐

