「バイト数」の版間の差分
ナビゲーションに移動
検索に移動
編集の要約なし |
文字コード指定版の追加 |
||
| 26行目: | 26行目: | ||
.replace(/(\d{3})/g, "$1,").match(/./g) | .replace(/(\d{3})/g, "$1,").match(/./g) | ||
.reverse().join("").replace(/^,/, "") + " バイト"; | .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> | </source> | ||
2015年4月4日 (土) 08:05時点における版
編集中の文書のバイト数をステータスバーに表示します。半角文字は1バイト、全角文字は2バイトとして計算します。
// -----------------------------------------------------------------------------
// バイト数
//
// 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(/^,/, "") + " バイト";
}
文字コードを指定,または取得してバイト数を計算します.
オプション
| encoding | 文字コード指定. 空の場合はそのドキュメントの文字モード. sjis のように直接指定すれば常にその文字コードで計算. |
|---|---|
| CRLF | 改行コードの指定. CR + LF の場合は true. CR または LF の場合は false. |
| BOM | BOM コード分を加算するかの指定. BOM 分を加算するときは true.(保存したファイルのサイズと一致します) BOM 分を加算しない場合は false. |
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(/^,/, "");
}
スポンサーリンク