处理的步骤:
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();
发表于 @ 2008年07月05日 10:06:00|评论(loading...)|编辑|收藏