ユーザーに表示される書記素の JavaScript 文字列の長さを取得しようとしています。つまり、結合文字 (およびサロゲート ペア?) を無視しています。これは可能ですか?もしそうなら、どうすればいいですか?
私たちのプロジェクトでは dojo ツールキットを使用していますが、一般的な JavaScript ソリューションはどれでも優れています。
ユーザーに表示される書記素の JavaScript 文字列の長さを取得しようとしています。つまり、結合文字 (およびサロゲート ペア?) を無視しています。これは可能ですか?もしそうなら、どうすればいいですか?
私たちのプロジェクトでは dojo ツールキットを使用していますが、一般的な JavaScript ソリューションはどれでも優れています。
組み合わせ文字については、すべての組み合わせ文字 (とりわけ) を一覧表示するDerived Combining Classを参照してください。あなたはただ数えることに興味があるだけなので、それらを完全に破壊することができます-わずかに近い見積もりが得られます.
Angus によってリンクされた投稿では、BMP の外側にある JavaScript 文字列は、サロゲートを処理するコードを示しています。しかし、コードは実際にはあなたが望むこととは反対のことをします.0x10000+ コードポイントを 2 つのコードポイントに分割します. JSに関する限り、それは1つのコードポイントです-切り捨てられたものではありますが。誰も気にしない?あなたはそれらを数えていて、表示していません...
しかし、対処したい別のカテゴリのコードポイントがあります。それは印刷不可能な文字です。もちろん 0x20 未満のものですが、他にもたくさんあります。たとえば、0x2000 の範囲を見てください。これらも表示されず、カウントに含めるべきではありません。
このオープンソースの CoffeeScript 実装は、十分に機能しているようです: https://github.com/devongovett/grapheme-breaker (CS でなければ)