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