루비 : 잠재적으로 유니 코드 문자열을 바이트로 나누는 방법
문제
나는 사용자 입력을 취하고 화면에서 렌더링하는 게임을 작성하고 있습니다. 이것에 사용하는 엔진은 전적으로 유니 코드 친화적이므로 가능하다면 유지하고 싶습니다. 문제는 렌더링 루프가 다음과 같습니다.
"string".each_byte do |c|
render_this_letter(c)
end
나는 i18N에 대해 많이 알지 못하지만, 위의 코드가 나와 내 언어를 구사하는 사람들에게만 효과가 있다는 것을 알고있을만큼 충분히 알고 있습니다. 나는 다음과 같은 것을 선호합니다.
"unicode string".each_unicode_letter do |u|
render_unicode_letter(u)
end
이것이 핵심 분포에 존재합니까? 설치에 추가 요구 사항을 추가하는 것이 다소 반대하지만, 그렇게하는 유일한 방법이라면 살 것입니다.
추가 재미를 위해 문자열이 실제로 유니 코드 문자열인지 알 수있는 방법이 없습니다.
편집 : 내가 사용하고있는 라이브러리는 실제로 전체 문자열을 렌더링 할 수 있지만 사용자가 즉석에 나오는 것을 편집하게 할 수 있습니다. .
해결책
불행히도 Ruby 1.8.x는 유니 코드 지원이 좋지 않습니다. 1.9로 해결되고 있습니다. 그러나 그 동안 이와 같은 라이브러리는 (http://snippets.dzone.com/posts/show/4527)는 좋은 해결책입니다. 링크 된 라이브러리를 사용하면 코드가 다음과 같습니다.
"unicode_string".each_utf8_char do |u|
render_unicode_letter(u)
end
다른 팁
당신은 포함시킬 수 있습니다 ActivesUpport :: CoreExtensions :: String :: Unicode Rails 코드베이스의 모듈.
제휴하지 않습니다 StackOverflow