使用stringr将两个单词的首字母大写并用下划线分隔

时间:2019-07-29 15:39:32

标签: r stringr

我有一个像word_string这样的字符串。我想要的是Word_String。如果我使用str_to_title中的函数stringr,则得到的是Word_string。它不会将第二个单词大写。

有人知道用stringr实现这一目标的任何优雅方法吗?谢谢!

4 个答案:

答案 0 :(得分:3)

这是使用sub的基本R选项:

input <- "word_string"
output <- gsub("(?<=^|_)([a-z])", "\\U\\1", input, perl=TRUE)
output

[1] "Word_String"

所使用的正则表达式模式匹配,并且捕获任何小写字母[a-z],其后跟字符串的开头(即第一个字母)或下划线。然后,我们用单个字母的大写形式替换。请注意,要更改为大写的\U修饰符是Perl扩展名,因此我们必须在Perl模式下使用sub

答案 1 :(得分:3)

也可以使用to_any_case中的snakecase

library(snakecase)
to_any_case(str1, "title", sep_out = "_")
#[1] "Word_String"

数据

str1 <- "word_string"

答案 2 :(得分:2)

这显然过于复杂,但还有另一种base可能性:

 test <- "word_string"
paste0(unlist(lapply(strsplit(test, "_"),function(x) 
  paste0(toupper(substring(x,1,1)),
           substring(x,2,nchar(x))))),collapse="_")
[1] "Word_String"

答案 3 :(得分:1)

您可以首先使用gsub"_"替换为" "并应用str_to_title函数

然后再次使用gsub将其更改为您的格式

x <- str_to_title(gsub("_"," ","word_string"))
gsub(" ","_",x)