In R, I\'d like to convert
c(\"ThisText\", \"NextText\")
to
c(\"this.text\", \"next.text\")
This is the r
You can replace all capitals with themselves and a preceeding dot with gsub
, change everything tolower
, and the substr
out the initial dot:
x <- c("ThisText", "NextText", "LongerCamelCaseText")
substr(tolower(gsub("([A-Z])","\\.\\1",x)),2,.Machine$integer.max)
[1] "this.text" "next.text" "longer.camel.case.text"
You could do this also via the snakecase
package:
install.packages("snakecase")
library(snakecase)
to_snake_case(c("ThisText", "NextText"), sep_out = ".")
# [1] "this.text" "next.text"
Github link to package: https://github.com/Tazinho/snakecase
Not clear what the entire set of rules is here but we have assumed that
To do this we can use perl regular expressions with sub
and gsub
:
# test data
camelCase <- c("ThisText", "NextText", "DON'T_CHANGE")
s <- gsub("([a-z])([A-Z])", "\\1.\\L\\2", camelCase, perl = TRUE)
sub("^(.[a-z])", "\\L\\1", s, perl = TRUE) # make 1st char lower case
giving:
[1] "this.text" "next.text" "DON'T_CHANGE"