大写的第一个字母

Kla*_*aus 40 string r

是否还有其他版本可以为每个字符串设置首字母,而且对于flac perl也是FALSE?

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

alk*_*989 65

您可以尝试以下方式:

name<-"hallo"
paste(toupper(substr(name, 1, 1)), substr(name, 2, nchar(name)), sep="")
Run Code Online (Sandbox Code Playgroud)

或者另一种方法是拥有如下功能:

firstup <- function(x) {
  substr(x, 1, 1) <- toupper(substr(x, 1, 1))
  x
}
Run Code Online (Sandbox Code Playgroud)

例子:

firstup("abcd")
## [1] Abcd

firstup(c("hello", "world"))
## [1] "Hello" "World"
Run Code Online (Sandbox Code Playgroud)

  • @Klaus但*确切*回答了你发布的问题.在有人发布工作答案之后,改变问题*的参数是非常糟糕的形式.不酷/公平!问一个新问题. (17认同)
  • 有时,除了小写的第一个字符外,还需要所有其他字符。因此,添加“x &lt;- tolower(x)”将很有用 (2认同)

Jac*_*sey 38

正如评论中指出的那样,现在可以做到: stringr::str_to_title("iwejofwe asdFf FFFF")

stringr使用stringi这需要复杂的国际化,统一等保健引擎盖下,你可以这样做: stri_trans_totitle("kaCk, DSJAIDO, Sasdd.", opts_brkiter = stri_opts_brkiter(type = "sentence"))

下面有一个C或C++库stringi.

  • 现在有一个stringr包装器:`str_to_title` (10认同)
  • 这并不能回答问题,因为“str_to_title”将**字符串中的每个字母转换为小写,除了每个单词的第一个字母**。例如,`str_to_title("AB ABC abc")`返回`Ab Abc Abc`。因此,除其他外,它破坏了首字母缩略词。 (2认同)

irJ*_*JvV 14

对于懒惰的人:

  paste0(toupper(substr(name, 1, 1)), substr(name, 2, nchar(name)))
Run Code Online (Sandbox Code Playgroud)

也会这样做.

  • 如果用"超级懒惰"表示"知道`paste0(x)`存在并且相当于`paste(x,sep ='')`". (2认同)

Oli*_*ver 13

在 中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"  
Run Code Online (Sandbox Code Playgroud)

  • str_to_sentence 的问题是,如果多个字母都是大写,它将把eg:EFFG-1 转换为Effg-1,而str_replace(input, "^\\w{1}", toupper) 保留原始结构。对于例如基因名称,这是一个更好的解决方案。 (3认同)
  • 不明白为什么这被否决了。正是我正在寻找的东西。投了赞成票。 (2认同)

小智 10

我喜欢使用 stringr 和 oneliner 的“tidyverse”方式

library(stringr)
input <- c("this", "is", "a", "test")
str_replace(input, "^\\w{1}", toupper)
Run Code Online (Sandbox Code Playgroud)

导致:

[1] "This" "Is"   "A"    "Test"
Run Code Online (Sandbox Code Playgroud)


lav*_*iex 8

通常我们需要第一个字母大写,其余的字符串小写。在这种情况下,我们需要先将整个字符串转换为小写。

受到@alko989 回答的启发,该功能将是:

firstup <- function(x) {
  x <- tolower(x)
  substr(x, 1, 1) <- toupper(substr(x, 1, 1))
  x
}
Run Code Online (Sandbox Code Playgroud)

例子:

firstup("ABCD")
## [1] Abcd
Run Code Online (Sandbox Code Playgroud)

另一种选择是str_to_titlestringr包中使用

dog <- "The quick brown dog"    
str_to_title(dog)
## [1] "The Quick Brown Dog"
Run Code Online (Sandbox Code Playgroud)