루비 : 잠재적으로 유니 코드 문자열을 바이트로 나누는 방법

StackOverflow https://stackoverflow.com/questions/144380

  •  02-07-2019
  •  | 
  •  

문제

나는 사용자 입력을 취하고 화면에서 렌더링하는 게임을 작성하고 있습니다. 이것에 사용하는 엔진은 전적으로 유니 코드 친화적이므로 가능하다면 유지하고 싶습니다. 문제는 렌더링 루프가 다음과 같습니다.

"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 코드베이스의 모듈.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top