- ホーム >
- MTエンジニアブログ >
- Movable Type 技術情報 >
- JavaScriptで文字列のバイト数(≠文字数)を求める方法
JavaScriptで文字列のバイト数(≠文字数)を求める方法
JavaScriptでは"あいうえお".lengthとすると、文字数(この場合は5)が返ります。そうではなくて、文字列のバイトコードサイズを取得したい場合について。
<script type="text/javascript">
var a = 'ABC123あいう';// in 15 bytes UTF-8
var tbl = [ 0, 1, 1, 1, 2, 3, 2, 3, 4, 3 ];
var len = 0;
for (i = 0; i < a.length; i++)
len += tbl [encodeURIComponent(a.charAt(i)).length];
alert(len);
</script>
UTF-8 限定です。UTF-8 では,0x00~0x7f 以上の文字コードは必ず複数個の %XX で表されるので、テーブル参照する必要はないハズですが,念のため,下表のようなテーブルを用いてバイト数をカウントしています。
%XX%XX%XX 9 -> 3 %XX%XXAA 8 -> 4 %XX%XXA 7 -> 3 %XX%XX 6 -> 2 %XXAA 5 -> 3 %XXA 4 -> 2 %XX 3 -> 1 %X 2 -> 1 A 1 -> 1 (0) -> 0
ところで,JavaScript の Virtual Machine 上では,物理的な CPU で活用されているパイプライン処理や分岐予測などの技術が実装されているかは知らないのですが(多分,今のところは無い)おそらくはテーブル参照による方法が一番高速ではないかと思います。
投稿者 ぴろり上西 : 09/08
新着記事
- [2011-06-02]PageBute プラグインで一つのブログ記事を複数ページに分割する
- [2011-05-28]変数名の罠
- [2011-05-27]プラグイン周りについて ~ プラグインのロード順
- [2011-05-25]プラグイン周りについて ~ プラグインセット
- [2011-05-13]データベースのアップグレードに失敗する時は























