8

ユーザーに表示される書記素の JavaScript 文字列の長さを取得しようとしています。つまり、結合文字 (およびサロゲート ペア?) を無視しています。これは可能ですか?もしそうなら、どうすればいいですか?

私たちのプロジェクトでは dojo ツールキットを使用していますが、一般的な JavaScript ソリューションはどれでも優れています。

4

3 に答える 3

1

組み合わせ文字については、すべての組み合わせ文字 (とりわけ) を一覧表示するDerived Combining Classを参照してください。あなたはただ数えることに興味があるだけなので、それらを完全に破壊することができます-わずかに近い見積もりが得られます.

Angus によってリンクされた投稿では、BMP の外側にある JavaScript 文字列は、サロゲートを処理するコードを示しています。しかし、コードは実際にはあなたが望むこととは反対のことをします.0x10000+ コードポイントを 2 つのコードポイントに分割します. JSに関する限り、それは1つのコードポイントです-切り捨てられたものではありますが。誰も気にしない?あなたはそれらを数えていて、表示していません...

しかし、対処したい別のカテゴリのコードポイントがあります。それは印刷不可能な文字です。もちろん 0x20 未満のものですが、他にもたくさんあります。たとえば、0x2000 の範囲を見てください。これらも表示されず、カウントに含めるべきではありません。

于 2012-05-19T17:37:48.063 に答える
0

このオープンソースの CoffeeScript 実装は、十分に機能しているようです: https://github.com/devongovett/grapheme-breaker (CS でなければ)

于 2015-01-02T06:17:20.990 に答える