Изменение регистра

Простые типы / Строки

library(tools)

text <- "Lower And Upper"

lower <- tolower(text)
# lower = lower and upper

upper <- toupper(text)
# upper = LOWER AND UPPER

# casefold() picks the direction by an argument
upper_too <- casefold(text, upper = TRUE)
# upper_too = LOWER AND UPPER

# Swap case: the ranges map letter to letter
swap_case <- chartr("a-zA-Z", "A-Za-z", text)
# swap_case = lOWER aND uPPER

# Only the first letter: \U upper-cases the group
capitalize <- sub("^(.)", "\\U\\1", lower,
                  perl = TRUE)
# capitalize = Lower and upper

# Title case: small words stay lower
title <- toTitleCase(lower)
# title = Lower and Upper

# A regex restarts after an apostrophe
bad_title <- gsub("\\b([a-z])", "\\U\\1",
                  "they're", perl = TRUE)
# bad_title = They'Re
good_title <- toTitleCase("they're")
# good_title = They're

cat("lower =", lower, "\n")
cat("upper =", upper, "\n")
cat("upper_too =", upper_too, "\n")
cat("swap_case =", swap_case, "\n")
cat("capitalize =", capitalize, "\n")
cat("title =", title, "\n")
cat("bad_title =", bad_title, "\n")
cat("good_title =", good_title, "\n")