Skip to content

Instantly share code, notes, and snippets.

@amyhenning
Created October 27, 2018 00:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save amyhenning/d94fcb72a9260072cb1b47a619138cfc to your computer and use it in GitHub Desktop.
Save amyhenning/d94fcb72a9260072cb1b47a619138cfc to your computer and use it in GitHub Desktop.
# Write a method that takes a camelcase string as an argument and converts it into snake case
def to_underscore(string)
uppercase = ("A".."Z").to_a
lowercase = ("a".."z").to_a
letters = string.split('')
snake_case = []
letters.each do |letter|
# first uppercase letter
if letters.index(letter) == 0 && uppercase.include?(letter)
lowercase_equiv = lowercase[uppercase.index(letter)]
snake_case.push(lowercase_equiv)
# handle uppercase letters in the middle - prepend an _
elsif letters.index(letter) != 0 && uppercase.include?(letter)
lowercase_equiv = lowercase[uppercase.index(letter)]
snake_case.push("_" + lowercase_equiv)
# handle lowercase letters and numbers
else
snake_case.push(letter)
end
end
snake_case.join
end
puts to_underscore("TestController")
puts to_underscore("AmyHenning")
puts to_underscore("Am7Days")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment