루비 습작2 카멜케이스를 abc_def_ghi형식으로 변환하기

By | 2012/06/12

루비로 이것 저것 만들기 시작하니 참 재미있고,
편리하다는 생각이 든다.
오늘은 어제랑 완전 반대인 예제를 만들었다.

testClassMethod 라는 문자열을 주면 test_class_method의 형식으로 변환해 주는
메서드를 만들어 보았다.

기능은 반대인데 코드는 그다지 닮지 않았다.
이번 예제에서 사용된 중요한 메서드는 gsub메서드인데 풀어쓰면
global substitute정도 될라나? 아래 레퍼런스를 참고하는게 확실하긴 하지만,
간단히 설명하면, 정규식을 사용해서 스트링내부의 문자열을 치환하는 기능을 제공한다.
자바로 치면 replaceAll() 정도 되는 메서드이다. 자주 사용될듯.

나는 책보고 했는데, 책이 없으신분들은 아래 사이트를 참고하자.
http://ruby-doc.org/core-1.9.3/String.html#method-i-gsub
책은 프로그래밍 루비 790쪽에 레퍼런스가 있다.

코드는 아래와 같다.

#!/usr/bin/ruby

def makeDowncase(val)

  val  = val.gsub(/[A-Z]/) {|x| '_' + x.downcase}

  puts val

end

print "input CamelCases : "
vars = gets
varList = vars.split(" ")
varList.each { |x| makeDowncase(x)}

실행하면 아래와 같이 나오고

input CamelCase : testClassMethod1 testClassMethod2 testClassMethod3 aaaBbbCcc dddEeeFff

결과는 이렇게 된다.

test_class_method1
test_class_method2
test_class_method3
aaa_bbb_ccc
ddd_eee_fff