我有一个像word_string
这样的字符串。我想要的是Word_String
。如果我使用str_to_title
中的函数stringr
,则得到的是Word_string
。它不会将第二个单词大写。
有人知道用stringr
实现这一目标的任何优雅方法吗?谢谢!
答案 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)