是否有其他版本可以使每个字符串的第一个字母大写,并且对于 flac perl 也使用 FALSE?
name<-"hallo"
gsub("(^[[:alpha:]])", "\\U\\1", name, perl=TRUE)
您可以尝试以下方法:
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"
正如评论中所指出的,现在可以这样做:
stringr::str_to_title("iwejofwe asdFf FFFF")
stringr
stringi
在处理复杂的国际化、unicode 等的幕后
使用,您可以执行以下操作:stri_trans_totitle("kaCk, DSJAIDO, Sasdd.", opts_brkiter = stri_opts_brkiter(type = "sentence"))
下面有一个 C 或 C++ 库stringi
。
在stringr
中,有str_to_sentence()
which 做类似的事情。这个问题的答案并不完全,但它解决了我遇到的问题。
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"
对于懒惰的打字机:
paste0(toupper(substr(name, 1, 1)), substr(name, 2, nchar(name)))
也会这样做。
通常我们只想要第一个字母大写,其余的字符串小写。在这种情况下,我们需要先将整个字符串转换为小写。
受@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"
我喜欢使用带有 oneliner 的 stringr 的“tidyverse”方式
library(stringr)
input <- c("this", "is", "a", "test")
str_replace(input, "^\\w{1}", toupper)
导致:
[1] "This" "Is" "A" "Test"