Frage

Ich schreibe ein Spiel, das Benutzereingabe nimmt und Rendering es auf dem Bildschirm. Der Motor ich dafür bin mit ist vollständig Unicode-freundlich, so würde ich die gerne behalten, wenn überhaupt möglich. Das Problem ist, dass die Rendering-Schleife wie folgt aussieht:

"string".each_byte do |c|
    render_this_letter(c)
end

Ich weiß nicht, eine ganze Menge über i18n, aber ich weiß genug, um den obigen Code zu wissen, ist immer nur für mich zur Arbeit zu gehen und Leute, die meine Sprache sprechen. Ich würde es vorziehen, so etwas wie:

"unicode string".each_unicode_letter do |u|
    render_unicode_letter(u)
end

Gibt es das in der Core-Distribution? Ich bin ein wenig abgeneigt, das Hinzufügen von zusätzlichen Anforderungen an die Installation, aber wenn es der einzige Weg, es zu tun, ich werde leben.

Für zusätzlichen Spaß, ich habe keine Möglichkeit zu wissen, wenn die Zeichenfolge, in der Tat, ein Unicode-String.

EDIT: Die Bibliothek verwende ich kann in der Tat ganze Strings machen, aber ich lasse ich den Benutzer bearbeiten, was im laufenden Betrieb kommt - wenn sie ‚Backspace‘ getroffen, im Wesentlichen, was ich wissen muß, wie viele Bytes zu hacken vom Ende.

War es hilfreich?

Lösung

Leider Rubin 1.8.x hat eine schlechte Unicode-Unterstützung. Es wird in 1,9 gerichtet. Aber in der Zwischenzeit, Bibliotheken wie diese ( http://snippets.dzone.com/posts / show / 4527 ) ist eine gute Lösung. Mit Hilfe der verknüpften Bibliothek, Ihr Code in etwa so aussehen:

"unicode_string".each_utf8_char do |u| 
    render_unicode_letter(u)
end

Andere Tipps

Sie können Active :: CoreExtensions :: String: : Unicode Modul von den Schienen Codebasis.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top