* 아래는 높은 버전(1.9.2 이상)의 Ruby를 사용할 때 적용된다.
UTF--8 인코딩이면 영문이든 한글이든 모두 문자열을 거꾸로 하기가 잘된다.
String.reverse 또는 Strig.reverse() 하면 거꾸로 된 문자열을 얻는다.
예제 1. 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 />
####################
'프로그래밍 > Ruby' 카테고리의 다른 글
Ruby 언어로 평방근, 입방근, n제곱근 구하는 함수를 구현하고 테스트하기 (0) | 2013.01.11 |
---|---|
Ruby 언어로 역삼각함수, 역쌍곡선함수 값을 구하는 예제 (0) | 2013.01.01 |
Mac OS X Lion 에서 Ruby 1.9.2 설치하여 Tk GUI 사용하기 (0) | 2011.08.25 |
숫자 맞추기 게임 with Ruby (0) | 2009.11.05 |
스트링 리스트에서 스트링 찾기(find) with Ruby (0) | 2009.04.22 |