【脚本共享】竖排文字的脚本。

时间:2022-09-04 23:50:54
处理的步骤: 1、将文本转换为全角字符; 2、生成一个网格,放到二维数组中; 3、将文字替换到二维数组相应的位置; 4、将二维数组处理成字符串。 使用方法参考这里历史的博文。 ╔═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╤═╗ ║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │║ ║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │║ ║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │║║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │║ ║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │║ ║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │║ ║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │║ ║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │║ ║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │║ ║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │║ ╚═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╧═╝
function SBCCase(text)
{
var text = text.replace(/[/r/n]+/img, " ");
var chars = " !"#¥%&'()*+,-./0123456789:;<=>?@" +
"ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`" +
"abcdefghijklmnopqrstuvwxyz{|} ̄";
var result = "";
for (var i = 0; i < text.length; i++)
{
var unicode = text.charCodeAt(i);
if (unicode >= 32 && unicode <= 126)
result
+= chars.charAt(unicode - 32);
else result += text.charAt(i);
}
return result;
}

function GridBuilder(colCount, rowCount, gridColor)
{
var gridChars = " ╔╤╗╚╧╝═║│";
var result = new Array();
for (var row = 0; row < rowCount; row++)
{
if (row == 0)
{
var temp = new Array();
var char = gridChars.charAt(1);
if (typeof(gridColor) != "undefined")
var char = "[color=" + gridColor + "]" + char;
temp.push(
char);
for (var col = 1; col < colCount; col++)
{
temp.push(gridChars.charAt(
7));
temp.push(gridChars.charAt(
2));
}
temp.push(gridChars.charAt(
7));
var char = gridChars.charAt(3);
if (typeof(gridColor) != "undefined")
var char = char + "[/color]";
temp.push(
char);
result.push(temp);
}
var temp = new Array();
var char = gridChars.charAt(8);
if (typeof(gridColor) != "undefined")
var char = "[color=" + gridColor + "]" + char + "[/color]";
temp.push(
char);
for (var col = 1; col < colCount; col++)
{
temp.push(gridChars.charAt(
0));
var char = gridChars.charAt(9);
if (typeof(gridColor) != "undefined")
var char = "[color=" + gridColor + "]" + char + "[/color]";
temp.push(
char);
}
temp.push(gridChars.charAt(
0));
var char = gridChars.charAt(8);
if (typeof(gridColor) != "undefined")
var char = "[color=" + gridColor + "]" + char + "[/color]";
temp.push(
char);
result.push(temp);

if (row == rowCount - 1)
{
var temp = new Array();
var char = gridChars.charAt(4);
if (typeof(gridColor) != "undefined")
var char = "[color=" + gridColor + "]" + char;
temp.push(
char);
for (var col = 1; col < colCount; col++)
{
temp.push(gridChars.charAt(
7));
temp.push(gridChars.charAt(
5));
}
temp.push(gridChars.charAt(
7));
var char = gridChars.charAt(6);
if (typeof(gridColor) != "undefined")
var char = char + "[/color]";
temp.push(
char);
result.push(temp);
}
}
return result;
}

function GridText(grid)
{
var result = "";
for (var i = 0; i < grid.length; i++)
result
+= grid[i].join("") + "/r/n";
return result;
}

function GridFull(colCount, rowCount, text, gridColor, textColor, left2right)
{
if (colCount <= 0) return "";
if (rowCount <= 0) return "";
var result = "";
var text = SBCCase(text);
var grid = null;
for (var i = 0; i < text.length; i++)
{
if (!grid) grid = GridBuilder(colCount, rowCount, gridColor);
var j = i % (colCount * rowCount);
var row = j % rowCount;
var col = Math.floor(j / rowCount);
var char = text.charAt(i);
if (typeof(textColor) != "undefined")
var char = "[color=" + textColor + "]" + char + "[/color]";
if (typeof(left2right) != "undefined" && left2right)
grid[row
+ 1][col * 2 + 1] = char;
else grid[row + 1][(colCount - col) * 2 - 1] = char;
if ((i + 1) % (colCount * rowCount) == 0 )
{
result
+= GridText(grid) + "/r/n";
grid
= null;
}
}
if (grid) result += GridText(grid);
return result;
}

var colCount = 18;
var rowCount = 10;
var left2right = false;
var gridColor = undefined/*"#808080"*/;
var textColor = "#FF0000";

function getEditor()
{
var replyframe = parent.document.getElementById("replyframe");
if (replyframe)
return replyframe.contentWindow.document.getElementById("tb_ReplyBody___Editor");
else
return document.getElementById("ctl00_ctl00_CPH_Content_CPH_BaseContent_tb_TopicBody___Editor");
}

function setEditorText(value)
{
var editor = getEditor();
if (editor)
{
editor.value
= value;
editor.focus();
}
}

function getEditorText()
{
var editor = getEditor();
if (editor) return editor.value;
}

function setGrid()
{
setEditorText(GridFull(colCount, rowCount, getEditorText(), gridColor, textColor, left2right));
}

setGrid();