【问题标题】:Capitalise every word of a sentence except the very first letter将除第一个字母之外的句子的每个单词大写
【发布时间】:2021-01-13 03:55:27
【问题描述】:

我想capitalise 除了第一个字母之外的句子的每个单词。这里也有类似的讨论——Capitalize the first letter of both words in a two word string

所以函数可以用作-

name <- c("zip code", "state", "final count")
simpleCap <- function(x) {
  s <- strsplit(x, " ")[[1]]
  paste(toupper(substring(s, 1,1)), substring(s, 2),
      sep="", collapse=" ")
}
sapply(name, simpleCap)

但它也将第一个字母大写。我想要"zip Code" 之类的东西,而不是"Zip Code"。有什么方法可以实现吗?

我们将不胜感激。

【问题讨论】:

    标签: r string


    【解决方案1】:

    使用一些基本的正则表达式:

    name <- c("zip code", "state", "final count")
    gsub("\\s([a-z])", " \\U\\1", name, perl = TRUE)
    # [1] "zip Code"     "state"        "final Count"
    

    允许使用非 ascii 字母:

    name <- c("zip code", "state", "final count", "uribe álvaro")
    gsub("\\s(\\p{L})", " \\U\\1", name, perl = TRUE)
    # [1] "zip Code"     "state"        "final Count"  "uribe Álvaro"
    

    【讨论】:

      【解决方案2】:

      我喜欢该链接中使用toTitleCase 的第二个解决方案。您可以使用正则表达式将第一个字符变为小写。

      simpleCap <- function(x) {
        sub('(.)', '\\L\\1', tools::toTitleCase(x), perl = TRUE)
      }
      
      simpleCap('Zip Code')
      #[1] "zip Code"
      simpleCap('this text')
      #[1] "this Text"
      simpleCap(name)
      #[1] "zip Code"    "state"       "final Count"
      

      【讨论】:

        【解决方案3】:

        或者稍微修改strsplit 方法:

        capExceptFirst <- function(x) {
          s <- strsplit(x, " ")[[1]]
          
          paste(
            tolower(s[1]),
            paste(toupper(substring(s[-1], 1,1)), substring(s[-1], 2),
                sep="", collapse=" "),
            collapse = " "
          )
        }
        
        sapply(name, capExceptFirst)
        

        输出:

             zip code         state   final count 
           "zip Code"      "state " "final Count" 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-11
          • 2011-07-20
          • 1970-01-01
          • 2020-10-06
          • 2022-11-27
          相关资源
          最近更新 更多