「バイト数」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
Ks (トーク | 投稿記録)
文字コード指定版の追加
MSY-07 (トーク | 投稿記録)
SyntaxHighlightにcopyの追加
 
(4人の利用者による、間の19版が非表示)
1行目: 1行目:
== Kuro 版 ==
編集中の文書のバイト数をステータスバーに表示します。半角文字は1バイト、全角文字は2バイトとして計算します。
編集中の文書のバイト数をステータスバーに表示します。半角文字は1バイト、全角文字は2バイトとして計算します。


<source lang="javascript">
<syntaxhighlight lang="javascript" copy>
// -----------------------------------------------------------------------------
var s = document.selection.Text;
// バイト数
if (s == "") {
//
s = document.Text;
// Copyright (c) Kuro. All Rights Reserved.
}
// www:    http://www.haijin-boys.com/
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(/^,/, "") + " バイト";
</syntaxhighlight>


with (document) {
== ks 版 ==
  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"
{| class="wikitable"
!encoding
!encoding
|文字コード指定.<br>空の場合はそのドキュメントの文字モード.<br>sjis のように直接指定すれば常にその文字コードで計算.
|文字コード指定。<br>空の場合はそのドキュメントの文字モード。<br>sjis のように直接指定すれば常にその文字コードで計算。
|-
|-
!CRLF
!CRLF
|改行コードの指定.<br>CR + LF の場合は true.<br>CR または LF の場合は false.
|改行コードの指定。<br>CR + LF の場合は true。<br>CR または LF の場合は false。
|-
|-
!BOM
!BOM
|BOM コード分を加算するかの指定.<br>BOM 分を加算するときは true.(保存したファイルのサイズと一致します)<br>BOM 分を加算しない場合は false.
|BOM コード分を加算するかの指定。<br>BOM 分を加算するときは true(保存したファイルのサイズと一致します)。<br>BOM 分を加算しない場合は false。
|}
|}
<source lang="javascript">
 
var encoding = "";  // 指定時はその文字コード.
=== ソースコード ===
var CRLF = true;    // 改行コードが CRLF なら true.そうでないなら false.
<syntaxhighlight lang="javascript" copy>
var BOM = true;    // BOM を考慮する場合は true.考慮しない場合は false.
var encoding = "";  // 指定時はその文字コード。
var CRLF = true;    // 改行コードが CRLF なら true。そうでないなら false。
var BOM = true;    // BOM を考慮する場合は true。考慮しない場合は false。


var charset = "";
var charset = "";
var s = Document.Selection.IsEmpty ? Document.Text : Document.Selection.Text;
var s = document.selection.IsEmpty ? document.Text : document.selection.Text;
s = CRLF ? s.replace(/\r?\n/g, "\r\n") : s;
s = CRLF ? s.replace(/\r?\n/g, "\r\n") : s;
if (!encoding) {
if (!encoding) {
  switch (Document.Encoding){
switch (document.Encoding){
    case meEncodingUTF16LE:
case meEncodingUTF16LEBOM:
    case meEncodingUTF16BE:               WriteBytes(s.length * 2 + (BOM?2:0)); Quit();
case meEncodingUTF16LENoBOM:
    case meEncodingUTF8WithSignature:
case meEncodingUTF16BEBOM:
    case meEncodingUTF8WithoutSignature: charset = "utf-8";        break;
case meEncodingUTF16BENoBOM: WriteBytes(s.length * 2 + (BOM?2:0)); Quit();
    case meEncodingUTF7:                 charset = "utf-7";        break;
case meEncodingUTF8BOM:
    case meEncodingEUC:                   charset = "euc-jp";      break;
case meEncodingUTF8NoBOM:     charset = "utf-8";        break;
    case meEncodingJIS:                   charset = "iso-2022-jp";  break;
case meEncodingUTF7:         charset = "utf-7";        break;
    case meEncodingShiftJIS:             charset = "sjis";        break;
case meEncodingEUC:           charset = "euc-jp";      break;
  }
case meEncodingJIS:           charset = "iso-2022-jp";  break;
case meEncodingShiftJIS:     charset = "sjis";        break;
}
} else {
} else {
  charset = encoding;
charset = encoding;
}
}


76行目: 72行目:
adodb.Close();
adodb.Close();


if (!encoding && (Document.Encoding == meEncodingUTF8WithoutSignature || (!BOM && Document.Encoding == meEncodingUTF8WithSignature))) {
if (!encoding && (document.Encoding == meEncodingUTF8NoBOM || (!BOM && document.Encoding == meEncodingUTF8BOM))) {
  bytes -= 3;
bytes -= 3;
}
}
WriteBytes(bytes);
WriteBytes(bytes);
function WriteBytes(bytes){
function WriteBytes(bytes){
  Status = String(bytes).split("").reverse().join("").replace(/(\d{3})/g, "$1,").split("").reverse().join("").replace(/^,/, "");
Status = String(bytes).split("").reverse().join("").replace(/(\d{3})/g, "$1,").split("").reverse().join("").replace(/^,/, "");
}
}
</source>
</syntaxhighlight>

2025年6月29日 (日) 23:59時点における最新版

Kuro 版[編集]

編集中の文書のバイト数をステータスバーに表示します。半角文字は1バイト、全角文字は2バイトとして計算します。

var s = document.selection.Text;
if (s == "") {
	s = document.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(/^,/, "") + " バイト";

ks 版[編集]

文字コードを指定、または取得してバイト数を計算します。

オプション[編集]

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 meEncodingUTF16LEBOM:
		case meEncodingUTF16LENoBOM:
		case meEncodingUTF16BEBOM:
		case meEncodingUTF16BENoBOM:  WriteBytes(s.length * 2 + (BOM?2:0)); Quit();
		case meEncodingUTF8BOM:
		case meEncodingUTF8NoBOM:     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 == meEncodingUTF8NoBOM || (!BOM && document.Encoding == meEncodingUTF8BOM))) {
	bytes -= 3;
}
WriteBytes(bytes);
function WriteBytes(bytes){
	Status = String(bytes).split("").reverse().join("").replace(/(\d{3})/g, "$1,").split("").reverse().join("").replace(/^,/, "");
}
スポンサーリンク