1#' Swap the case of a string. 2#' 3#' Return a copy of the string with uppercase characters converted to lowercase and vice versa. 4#' 5#' @param str A string. 6#' 7#' @return A string. 8#' 9#' @references \url{https://docs.python.org/3/library/stdtypes.html#str.swapcase} 10#' 11#' @examples 12#' pystr_swapcase("Swap Me!") 13#' 14#' @export 15pystr_swapcase <- function(str) { 16 return(vapply(str, pystr_swapcase_, character(1), USE.NAMES = FALSE)) 17} 18 19pystr_swapcase_ <- function(str) { 20 swapped = "" 21 22 for(i in 1:nchar(str)) { 23 letter = substr(str, i, i) 24 25 if(pystr_isupper(letter)) { 26 swapped = paste0(swapped, pystr_lower(letter)) 27 } else if(pystr_islower(letter)) { 28 swapped = paste0(swapped, pystr_upper(letter)) 29 } else { 30 swapped = paste0(swapped, letter) 31 } 32 } 33 34 return(swapped) 35} 36