「可変長を固定長に変換」の版間の差分
ナビゲーションに移動
検索に移動
スペースからタブに変更 |
with文を使用しないソースコードに修正 |
||
| 5行目: | 5行目: | ||
#tooltip = "可変長のCSVの各項目を半角スペースで埋めて固定長にします。" | #tooltip = "可変長のCSVの各項目を半角スペースで埋めて固定長にします。" | ||
var sel = document.selection; | |||
// カーソル位置を保存 | |||
var x = sel.GetActivePointX(mePosLogical); | |||
var y = sel.GetActivePointY(mePosLogical); | |||
// 最大長格納配列 | // 最大長格納配列 | ||
var a = new Array(); | var a = new Array(); | ||
| 39行目: | 38行目: | ||
document.Text = a1.join("\n"); | document.Text = a1.join("\n"); | ||
// カーソル位置を復元 | // カーソル位置を復元 | ||
sel.SetActivePoint(mePosLogical, x, y, false); | |||
} | } | ||
2024年12月29日 (日) 09:17時点における版
可変長の CSV の各項目を半角スペースで埋めて固定長にします。
#title = "可変長を固定長に変換"
#tooltip = "可変長のCSVの各項目を半角スペースで埋めて固定長にします。"
var sel = document.selection;
// カーソル位置を保存
var x = sel.GetActivePointX(mePosLogical);
var y = sel.GetActivePointY(mePosLogical);
// 最大長格納配列
var a = new Array();
// 改行コードで配列に分割
var a1 = document.Text.split("\n");
if (a1.length > 0) {
// 最大長を取得
for (var i = 0; i < a1.length; i++) {
// カンマで配列に分割
var a2 = a1[i].split(",");
for (var j = 0; j < a2.length; j++) {
var l = getByteCount(a2[j]);
if (i == 0 || a[j] < l) {
a[j] = l;
}
}
}
// 最大長を設定
for (var i = 0; i < a1.length; i++) {
// カンマで配列に分割
var a2 = a1[i].split(",");
for (var j = 0; j < a2.length; j++) {
a2[j] = a2[j] + (new Array(a[j] - getByteCount(a2[j]) + 1).join(" "));
}
// カンマ区切りで結合
a1[i] = a2.join(",");
}
// 改行コード区切りで結合
document.Text = a1.join("\n");
// カーソル位置を復元
sel.SetActivePoint(mePosLogical, x, y, false);
}
// バイト数取得
function getByteCount(arg1) {
var temp = 0;
var length = arg1.length;
for (var i = 0; i < length; i++) {
var c = arg1.charCodeAt(i);
if ((c >= 0x0 && c < 0x81) || (c == 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4)) {
temp += 1;
} else {
temp += 2;
}
}
return temp;
}
スポンサーリンク