「可変長を固定長に変換」の版間の差分
省略された波括弧の追加 |
SyntaxHighlightにcopyの追加 |
||
| (同じ利用者による、間の4版が非表示) | |||
| 1行目: | 1行目: | ||
可変長の CSV の各項目を半角スペースで埋めて固定長にします。 | 可変長の CSV の各項目を半角スペースで埋めて固定長にします。 | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript" copy> | ||
#title = "可変長を固定長に変換" | |||
#tooltip = "可変長のCSVの各項目を半角スペースで埋めて固定長にします。" | |||
var sel = document.selection; | |||
// カーソル位置を保存 | |||
var x = sel.GetActivePointX(mePosLogical); | |||
var y = sel.GetActivePointY(mePosLogical); | |||
// 最大長格納配列 | // 最大長格納配列 | ||
var a = | var a = []; | ||
// 改行コードで配列に分割 | // 改行コードで配列に分割 | ||
var a1 = document.Text.split("\n"); | var a1 = document.Text.split("\n"); | ||
if (a1.length > 0) { | 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) { | 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; | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
スポンサーリンク