* 아래는 높은 버전(1.9.2 이상)의 Ruby를 사용할 때 적용된다.

UTF--8 인코딩이면 영문이든 한글이든 모두 문자열을 거꾸로 하기가 잘된다.

String.reverse 또는 Strig.reverse() 하면 거꾸로 된 문자열을 얻는다.


예제 1.  UTF-8 한글 문자열을 잘 처리하는 예제

# -*- encoding: utf-8 -*-

a = "Hello, world!"
b = "안녕하세요? 아햏햏"
puts "%s --> %s" % [a, a.reverse()]
puts "%s --> %s" % [b, b.reverse()]
####################
# Expected:
#   Hello, world! --> !dlrow ,olleH
#   안녕하세요? 아햏햏 --> 햏햏아 ?요세하녕안
# Result:
#   Hello, world! --> !dlrow ,olleH
#   안녕하세요? 아햏햏 --> 햏햏아 ?요세하녕안
####################



버전 1.8.6 이하의 Ruby 언어에서는 유니코드를 거의 지원하지 않아서 iconv 를 이용하여 문자열 인코딩 변환을 하였지만. 버전 1.9.2 이상의 Ruby 언어에서는 유니코드를 지원하므로 reverse 뿐만 아니라 split를 써도 된다.

다음은 reverse 대신 split를 적용하여 한글은 거꾸로 하는 에제이다.


예제 2. 높은 버전의 Ruby 언어에서 UTF-8 한글 문자열을 분리하여 거꾸로 하는 예제

# -*- encoding: utf-8 -*-

a = "Hello, world!"
b = "안녕하세요? 아햏햏"

# 루비 언어에서 문자열 분리하여 거꾸로 하기
for i in b.split(//u).reverse do
    print "%s<br />\n" % i
end
for i in b.upcase.gsub(/([ㄱ-ㅎㅏ-ㅣ가-힣])/u,'\1.').split('.').reverse do
    print "%s<br />\n" % i
end

####################
# Expected:
# 햏<br />
# 햏<br />
# 아<br />
#  <br />
# ?<br />
# 요<br />
# 세<br />
# 하<br />
# 녕<br />
# 안<br />
# 햏<br />
# 햏<br />
# ? 아<br />
# 요<br />
# 세<br />
# 하<br />
# 녕<br />
# 안<br />
# Result:
# 햏<br />
# 햏<br />
# 아<br />
#  <br />
# ?<br />
# 요<br />
# 세<br />
# 하<br />
# 녕<br />
# 안<br />
# 햏<br />
# 햏<br />
# ? 아<br />
# 요<br />
# 세<br />
# 하<br />
# 녕<br />
# 안<br />
####################




Posted by Scripter
,