「
バイト数
」を編集中
2018年11月17日 (土) 17:12時点における
Sukemaru
(
トーク
|
投稿記録
)
による版
(「バイト数と文字数・行数」 (sukemaru))
(
差分
)
← 古い版
|
最新版
(
差分
) |
新しい版 →
(
差分
)
ナビゲーションに移動
検索に移動
警告: このページの古い版を編集しています。
公開すると、この版以降になされた変更がすべて失われます。
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、さまざまなメリットもあります。
スパム攻撃防止用のチェックです。 決して、ここには、値の入力は
しない
でください!
== バイト数 == 編集中の文書のバイト数をステータスバーに表示します。半角文字は1バイト、全角文字は2バイトとして計算します。 <source lang="javascript"> // ----------------------------------------------------------------------------- // バイト数 // // Copyright (c) Kuro. All Rights Reserved. // www: http://www.haijin-boys.com/ // ----------------------------------------------------------------------------- with (document) { var s = document.selection.Text; if (s == "") s = Text; var j = 0; var l = s.length; for (var i = 0; i < l; i++) { var c = s.charCodeAt(i); if ((c >= 0x0 && c < 0x81) || (c == 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4)) j += 1; else j += 2; } window.status = ("" + j).match(/./g).reverse().join("") .replace(/(\d{3})/g, "$1,").match(/./g) .reverse().join("").replace(/^,/, "") + " バイト"; } </source> <br> <br> == 文字コードを指定,または取得してバイト数を計算 == 文字コードを指定,または取得してバイト数を計算します.<br> <br> '''オプション''' {| class="wikitable" !encoding |文字コード指定.<br>空の場合はそのドキュメントの文字モード.<br>sjis のように直接指定すれば常にその文字コードで計算. |- !CRLF |改行コードの指定.<br>CR + LF の場合は true.<br>CR または LF の場合は false. |- !BOM |BOM コード分を加算するかの指定.<br>BOM 分を加算するときは true.(保存したファイルのサイズと一致します)<br>BOM 分を加算しない場合は false. |} <source lang="javascript"> var encoding = ""; // 指定時はその文字コード. var CRLF = true; // 改行コードが CRLF なら true.そうでないなら false. var BOM = true; // BOM を考慮する場合は true.考慮しない場合は false. var charset = ""; var s = Document.Selection.IsEmpty ? Document.Text : Document.Selection.Text; s = CRLF ? s.replace(/\r?\n/g, "\r\n") : s; if (!encoding) { switch (Document.Encoding){ case meEncodingUTF16LE: case meEncodingUTF16BE: WriteBytes(s.length * 2 + (BOM?2:0)); Quit(); case meEncodingUTF8WithSignature: case meEncodingUTF8WithoutSignature: charset = "utf-8"; break; case meEncodingUTF7: charset = "utf-7"; break; case meEncodingEUC: charset = "euc-jp"; break; case meEncodingJIS: charset = "iso-2022-jp"; break; case meEncodingShiftJIS: charset = "sjis"; break; } } else { charset = encoding; } var adodb = new ActiveXObject('ADODB.Stream'); adodb.Type = 2; adodb.Charset = charset; adodb.Open(); adodb.WriteText(s); var bytes = adodb.Position; adodb.Close(); if (!encoding && (Document.Encoding == meEncodingUTF8WithoutSignature || (!BOM && Document.Encoding == meEncodingUTF8WithSignature))) { bytes -= 3; } WriteBytes(bytes); function WriteBytes(bytes){ Status = String(bytes).split("").reverse().join("").replace(/(\d{3})/g, "$1,").split("").reverse().join("").replace(/^,/, ""); } </source> == バイト数と文字数・行数 == ※ ロースペックPC用 ※ <br>Kuro 氏の「バイト数」のソースコードに文書全体または選択範囲の「文字数と行数」を表示させるコードを追加しました。行数の表示方法は、オプション設定の「行の表示方法」にて論理座標/表示座標を選択してください。 * 大きいファイルでは「選択範囲が変更されたとき」のイベントで自動実行する設定にすると選択範囲を解除した直後のレスポンスが悪くなるので、大きいファイルで "選択範囲なし" のときは文書全体の文字数と行数だけをステータスバーに表示します。 : ※ ロースペックPCで「カーソルが移動したとき」や「テキストが変更されたとき」などのイベントを有効にするとエディタのレスポンスはさらに悪くなりますので、有効化するイベント項目は精査してください。 * 「大きいファイル」の定義は、コード後半部分の '''dLines > nnnn''' で文書全体の行数、 '''d.Text.length > mmmm''' で文書全体の文字数 を基準に設定します。 : ※ マシンスペックにあわせて適当に大きな数値をあてておき、エディタの動作がモタつくようなら数値を下げてください。 <br> または、数値は大きいままにしておき、ファイル名やファイルパスを指定して動作を制限してください。 * 「大きいファイル」でも Ctrl+A などで文書全体を範囲選択すると、全体のバイト数を表示できます。 ▼ 制限事項 ▼ * 「行の表示方法」が論理行でも表示行でも、行番号のクリック(ドラッグ)で行選択したときは、行数表示は見かけよりも +1 大きい数値を返します。これはステータスバー中央に表示される選択範囲の行数にあわせた仕様です。 * マクロの Collapse() メソッドで選択範囲を解除した場合に、表示内容が文書全体の文字数/行数/バイト数に切り替わらないことがあります。SetActivePos( GetActivePos() ) メソッドで選択範囲を解除した場合は表示内容が正常に切り替わるようです。 <source lang="javascript"> #title = "バイト数と文字数・行数" /** * ------------------------------------------------------------------------ * バイト数 * Oliginal Copyright (c) Kuro. All Rights Reserved. * www: http://www.haijin-boys.com/ * * 編集中の文書のバイト数をステータスバーに表示します。 * 半角文字は1バイト、全角文字は2バイトとして計算します。 * ------------------------------------------------------------------------ * バイト数と文字数・行数 * modified by sukemaru * * バイト数と文字数・行数をステータスバーに表示します。 * 大きいファイルで "選択範囲なし" のときは文書全体の文字数と行数だけをステータスバーに表示します。 * ------------------------------------------------------------------------ */ //■行の表示方法 Logical = true; 行数を論理行で計算 / Logical = false; 表示行で計算する var Logical = true; var d = document, s = document.selection; if (s.IsEmpty) { var st = d.Text; var dLines = Logical ? d.GetLines(0) : d.GetLines(meGetLineView); } else { var st = s.Text; var sLines = Logical ? st.split("\n").length : 1 + s.GetBottomPointY(mePosView) - s.GetTopPointY(mePosView); } //文字数と行数をケタ区切りに var charValue = st.length.toLocaleString().replace(/\.00$/, "") + " 文字"; var lineValue = " ( " + (s.IsEmpty ? dLines : sLines).toLocaleString().replace(/\.00$/, "") + " 行 )"; var lowFullName = d.FullName.toLowerCase(); var lowName = d.Name.toLowerCase(); //■範囲選択なしのとき、大きいファイルでは文書全体のバイト数を計算しない //※ if - else 文なので、条件がエラーにならないようにサンプル(ダミー)の条件をを残しておくこと if (s.IsEmpty && ( dLines > 2000 || //■文書全体の「行数」で制限 d.Text.length > 40000 || //■文書全体の「文字数」で制限 /* ココに条件を追加する(末尾に || を付けること) */ // d.Name.match(/hoge.*\.xml/i) || //■「ファイル名」にマッチ(正規表現) // lowName == "fuga.dat" || //■「ファイル名」にマッチ /* 有効化する最後の項目には末尾に || を付けない */ lowFullName == "c:\\piyo.txt" //■「フルパス」にマッチ )) { //文書全体の文字数と行数をステータスバーに表示 window.Status = charValue + lineValue + " Ctrl+A / F5 キーで全体のバイト数を表示"; } else { //大きいファイルでないとき、または範囲選択ありのとき //計算処理は kuro 版まま var bytes = 0; for (var i = 0; i < st.length; i++) { var c = st.charCodeAt(i); if ((c >= 0x0 && c < 0x81) || (c >= 0xff61 && c < 0xffa0) || (c == 0xf8f0) || (c >= 0xf8f1 && c < 0xf8f4)) bytes += 1; else bytes += 2; } //選択範囲または文書全体のバイト数と、文字数と行数をステータスバーに表示 window.Status = charValue + lineValue + " / " + bytes.toLocaleString().replace(/\.00$/, "") + " バイト"; } </source>
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
キャンセル
編集ヘルプ
(新しいウィンドウで開きます)
スポンサーリンク
ナビゲーション メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク