大写的第一个字母

时间:2013-08-29 11:18:49

标签: r string

是否还有其他版本可以制作每个字符串大写的第一个字母,而且对于flac perl也是FALSE?

name<-"hallo"
gsub("(^[[:alpha:]])", "\\U\\1", name, perl=TRUE)

5 个答案:

答案 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"