将单个单词的最后一个字母大写
capitalize last letter of a single word
在R
尝试编写一个接受单词 MarsuPial 并生成 marsupiaL 的函数。
当前代码
mycap <- function(mystr = "") {
mystr <- tolower(mystr)
a <- substr(mystr, 1, 1)
b <- substr(mystr, 2, nchar(mystr))
paste(tolower(a), b, sep = "")
}
您可以使用 substr<-
将最后一个字符大写。
mycap <- function(mystr = "") {
mystr <- tolower(mystr)
n <- nchar(mystr)
substr(mystr, n, n) <- toupper(substr(mystr, n, n))
return(mystr)
}
mycap('MarsuPial')
#[1] "marsupiaL"
mycap('dummy')
#[1] "dummY"
mycap <- function(mystr = "") {
# a: the string without the last character
a <- substr(mystr, 1, nchar(mystr)-1)
# b: only the last character
b <- substr(mystr, nchar(mystr), nchar(mystr))
# lower(a) and upper(b)
paste(tolower(a), toupper(b), sep = "")
}
以你的例子为例:
mycap("MarsuPial")
[1] "marsupiaL
另一个避免字符串 subsetting/splitting 的选项是将字符串转换为整数向量以反转顺序,以便我们可以使用 stringr::str_to_title
.
library(stringr)
library(dplyr)
mycap <- function(mystr = "") {
mystr %>% utf8ToInt %>% rev %>% intToUtf8 %>% str_to_title %>% utf8ToInt %>% rev %>% intToUtf8
}
mycap("MarsuPial")
#[1] "marsupiaL"
mycap("dummy")
#[1] "dummY"
或者另一个快速的选择是使用 stringi::stri_reverse
和 stringi::stri_trans_totitle
library(stringi)
mycap <- function(mystr = "") stri_reverse(stri_trans_totitle(stri_reverse(mystr)))
在R 尝试编写一个接受单词 MarsuPial 并生成 marsupiaL 的函数。
当前代码
mycap <- function(mystr = "") {
mystr <- tolower(mystr)
a <- substr(mystr, 1, 1)
b <- substr(mystr, 2, nchar(mystr))
paste(tolower(a), b, sep = "")
}
您可以使用 substr<-
将最后一个字符大写。
mycap <- function(mystr = "") {
mystr <- tolower(mystr)
n <- nchar(mystr)
substr(mystr, n, n) <- toupper(substr(mystr, n, n))
return(mystr)
}
mycap('MarsuPial')
#[1] "marsupiaL"
mycap('dummy')
#[1] "dummY"
mycap <- function(mystr = "") {
# a: the string without the last character
a <- substr(mystr, 1, nchar(mystr)-1)
# b: only the last character
b <- substr(mystr, nchar(mystr), nchar(mystr))
# lower(a) and upper(b)
paste(tolower(a), toupper(b), sep = "")
}
以你的例子为例:
mycap("MarsuPial")
[1] "marsupiaL
另一个避免字符串 subsetting/splitting 的选项是将字符串转换为整数向量以反转顺序,以便我们可以使用 stringr::str_to_title
.
library(stringr)
library(dplyr)
mycap <- function(mystr = "") {
mystr %>% utf8ToInt %>% rev %>% intToUtf8 %>% str_to_title %>% utf8ToInt %>% rev %>% intToUtf8
}
mycap("MarsuPial")
#[1] "marsupiaL"
mycap("dummy")
#[1] "dummY"
或者另一个快速的选择是使用 stringi::stri_reverse
和 stringi::stri_trans_totitle
library(stringi)
mycap <- function(mystr = "") stri_reverse(stri_trans_totitle(stri_reverse(mystr)))