pascal_to_camel <- function(x) {
tolower(gsub
("([a-z0-9])([A-Z])", "\\1_\\2", gsub("(.)([A-Z][a-z]+)", "\\1_\\2", x)))
}
pascal_to_camel("PaymentDate") # [1] "payment_date"
pascal_to_camel("AccountsOnFile") # [1] "accounts_on_file"
pascal_to_camel("LastDateOfReturn") # [1] "last_date_of_return"
pascal_to_camel_uni <- function(x) {
tolower(gsub
("([\\p{Ll}0-9])(\\p{Lu})", "\\1_\\2", gsub("(.)(\\p{Lu}\\p{Ll}+)", "\\1_\\2", x, perl=TRUE), perl=TRUE))
}
pascal_to_camel_uni("ДеньОплаты")
cGFzY2FsX3RvX2NhbWVsIDwtIGZ1bmN0aW9uKHgpIHsKICAgIHRvbG93ZXIoZ3N1YigiKFthLXowLTldKShbQS1aXSkiLCAiXFwxX1xcMiIsIAogICAgICAgIGdzdWIoIiguKShbQS1aXVthLXpdKykiLCAiXFwxX1xcMiIsIHgpKSkKfQpwYXNjYWxfdG9fY2FtZWwoIlBheW1lbnREYXRlIikgICAgICAjIFsxXSAicGF5bWVudF9kYXRlIgpwYXNjYWxfdG9fY2FtZWwoIkFjY291bnRzT25GaWxlIikgICAjIFsxXSAiYWNjb3VudHNfb25fZmlsZSIKcGFzY2FsX3RvX2NhbWVsKCJMYXN0RGF0ZU9mUmV0dXJuIikgIyBbMV0gImxhc3RfZGF0ZV9vZl9yZXR1cm4iCgpwYXNjYWxfdG9fY2FtZWxfdW5pIDwtIGZ1bmN0aW9uKHgpIHsKICAgICB0b2xvd2VyKGdzdWIoIihbXFxwe0xsfTAtOV0pKFxccHtMdX0pIiwgIlxcMV9cXDIiLCAKICAgICAgICAgZ3N1YigiKC4pKFxccHtMdX1cXHB7TGx9KykiLCAiXFwxX1xcMiIsIHgsIHBlcmw9VFJVRSksIHBlcmw9VFJVRSkpCn0KcGFzY2FsX3RvX2NhbWVsX3VuaSgi0JTQtdC90YzQntC/0LvQsNGC0YsiKQ==