`
huobengle
  • 浏览: 854591 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多
处理的步骤: 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();

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics