1#' Titlecase a string. 2#' 3#' Return a titlecased version of the string where words start with an uppercase character 4#' and the remaining characters are lowercase. 5#' 6#' @param str A character vector. 7#' 8#' @return A character vector. 9#' 10#' @references \url{https://docs.python.org/3/library/stdtypes.html#str.title} 11#' 12#' @examples 13#' pystr_title("make me pretty!") 14#' 15#' @export 16pystr_title <- function(str) { 17 return(vapply(str, pystr_title_, character(1), USE.NAMES = FALSE)) 18} 19 20pystr_title_ <- function(str) { 21 titled = "" 22 23 for(i in 1:nchar(str)) { 24 letter = substr(str, i, i) 25 26 if(i == 1) { 27 titled = paste0(titled, toupper(letter)) 28 } else { 29 previous_char = substr(str, i - 1, i - 1) 30 31 if(!pystr_isalpha(previous_char)) { 32 titled = paste0(titled, toupper(letter)) 33 } else { 34 titled = paste0(titled, tolower(letter)) 35 } 36 } 37 } 38 39 return(titled) 40} 41