是否还有其他版本可以制作每个字符串大写的第一个字母,而且对于flac perl也是FALSE?
name<-"hallo"
gsub("(^[[:alpha:]])", "\\U\\1", name, perl=TRUE)
答案 0 :(得分:55)
您可以尝试以下内容:
name<-"hallo"
paste(toupper(substr(name, 1, 1)), substr(name, 2, nchar(name)), sep="")
或者另一种方法是使用如下函数:
firstup <- function(x) {
substr(x, 1, 1) <- toupper(substr(x, 1, 1))
x
}
示例:
firstup("abcd")
## [1] Abcd
firstup(c("hello", "world"))
## [1] "Hello" "World"
答案 1 :(得分:31)
正如评论中指出的,现在可以做到:
stringr::str_to_title("iwejofwe asdFf FFFF")
stringr
使用stringi
来处理复杂的国际化,unicode等,您可以这样做:
stri_trans_totitle("kaCk, DSJAIDO, Sasdd.", opts_brkiter = stri_opts_brkiter(type = "sentence"))
stringi
下面有一个C或C ++库。
答案 2 :(得分:13)
对于懒惰的人:
paste0(toupper(substr(name, 1, 1)), substr(name, 2, nchar(name)))
也会这样做。
答案 3 :(得分:9)
在stringr
中,有str_to_sentence()
做了类似的事情。不是这个问题的答案,但是可以解决我遇到的问题。
str_to_sentence(c("not today judas", "i love cats", "other Caps converteD to lower though"))
#> [1] "Not today judas" "I love cats" "Other caps converted to lower though"
答案 4 :(得分:0)
通常我们只想只首字母大写,其余字符串小写。在这种情况下,我们需要先将整个字符串转换为小写。
受@ alko989答案的启发,该功能将是:
firstup <- function(x) {
x <- tolower(x)
substr(x, 1, 1) <- toupper(substr(x, 1, 1))
x
}
示例:
firstup("ABCD")
## [1] Abcd
另一种选择是在str_to_title
软件包中使用stringr
dog <- "The quick brown dog"
str_to_title(dog)
## [1] "The Quick Brown Dog"