`
yeahoo
  • 浏览: 14358 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

文字竖排转换[HTML版]

阅读更多
跟这里《文字竖排工具的Firefox扩展安装包(支持横竖互换)》用的是相同的核心代码.
http://yeahoo.iteye.com/blog/214518

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>文字竖排转换工具(本地版)</title>
        <style type="text/css">
            *{margin:0; padding:0}
            select{padding:3px;}
            body,textarea{padding:5px; font:14px/20px '宋体';}
        </style>
        <script type="text/javascript">
            /**
             * 文字竖排转换工具
             * @author [email]yeahoo2000@gmail.com[/email]
             */
            var vPost={
                style:[
                     ['┏', '━┓', '━┯', '┗', '━┛', '━┷', '┃', '┆']
                    ,['╔', '═╗', '═╤', '╚', '═╝', '═╧', '║', '┆']
                    ,['┌', '─┐', '─┬', '└', '─┘', '─┴', '│', '┆']
                    ,['', '', '', '', '', '', '┃', '┆']
                    ,['', '', '', '', '', '', '║', '┆']
                    ,['', '', '', '', '', '', '│', '┆']
                ],

                replaces: [
                    ' ',' ', '\\(', '︵', '\\)','︶', '\\[','︻', '\\]', '︼', '\\{','︷', '\\}','︸', '《','︽', '》','︾', '\\^','︿', '—','|', ':','‥', ':','‥', '<','︿', '>','﹀' ,'‘','﹁', '’','﹂',  '“','﹃', '”','﹄', '…','┇'
                ],

                /**
                 * 一些特殊字符的替换操作
                 * @param string text 内容
                 * @return string
                 */
                replace: function(text){
                    text = text.replace(/\r\n/g, '\n');
                    text = text.replace(/\n\n/g, '\n');
                    for(var i=0; i<vPost.replaces.length; i+=2){
                        text = text.replace(new RegExp(vPost.replaces[i], 'g'), vPost.replaces[i+1]);
                    }
                    return text;
                },

                /**
                 * 去除头尾的空白字符
                 * @param string text 内容
                 * @return string
                 */
                trim: function(text){
                    return text.replace(/(^\s*)|(\s*$)/g, '')
                },

                /**
                 * 横排文字转成竖排
                 * @parm string text 内容
                 * @parm int r 行数
                 * @parm int c 列数
                 * @parm int sty 风格
                 * @return string
                 */
                convertV: function(text, r, c, sty){
                    text = vPost.replace(vPost.trim(text));

                    if(0 == c){ //如果用户选了自动列,则计算列数
                        c = text.length % r ? parseInt(text.length / r) + 1 : parseInt(text.length / r);
                    }

                    do{ //处理换行
                        var n = text.indexOf('\n');
                        if(-1 != n){
                            if(n%r){
                                var s = '';
                                for(var i=0; i<(r - n%r); i++){
                                    s += ' ';
                                }
                            }
                            text = text.substr(0, n) + s + text.substr(n+1);
                        }
                    }while(-1 != n);

                    var s = sh = sf = '';
                    if(vPost.style[sty][0]){
                        for(var i=0; i<=c; i++){ //处理边框
                            sh += 0 == i? vPost.style[sty][0]: (c == i ? vPost.style[sty][1] : vPost.style[sty][2]);
                            sf += 0 == i? vPost.style[sty][3] : (c == i ? vPost.style[sty][4] : vPost.style[sty][5]);
                        }
                    }

                    var p = text.length % (r * c) ? parseInt(text.length / (r * c)) + 1 : parseInt(text.length / (r * c)); //需要分成多少部份?
                    for(var i=0; i<p; i++){ //处理内容
                        s += sh? sh + '\n' : '';
                        for(var j=0; j<r; j++){
                            for(var k=0; k<c; k++){
                                s += 0 == k? vPost.style[sty][6] : '';
                                var t = text.substr(i * c * r + ((c-1)-k) * r + j, 1);
                                var cc = t.charCodeAt(0);
                                
                                t = cc < 127? String.fromCharCode(cc + 65248) : t; //将一些特殊字符转换为全角
                                s += t? t : ' ';
                                s += c-1 == k? vPost.style[sty][6] :vPost.style[sty][7];
                            }
                            s += '\n';
                        }
                        s += sf? sf + '\n\n' : '\n';
                    }
                    return s.substring(0, s.length -2); //去除最后的两个换行
                },

                /**
                 * 竖排文字转成横排
                 * @parm string text 内容
                 * @return string
                 */
                convertH: function(text){
                    if(!text) return '';
                    text = text.replace(/\r\n/g, '\n');
                    text = vPost.trim(text);

                    var blocks = text.split('\n\n');
                    var t = blocks[0];
                    var t = t.split('\n');
                    var r = t.length;
                    var c = t[0].length;

                    var hasHeader = true;
                    var border = t[0][1];
                    for(var i=1; i<c - 2; i += 2){ //判断在竖排格式中是否带有头脚边框
                        if( t[0][i] != border
                            || t[0][i] != t[0][i+2]
                            || t[r-1][i] != border
                            || t[r-1][i] != t[r-1][i+2]
                        ){
                            hasHeader = false;
                            break;
                        }
                    }
                    //alert('blocks='+blocks.length + " : r=" + r + ' : c=' + c + ' : isV='+isV+ ' : hasHeader=' + hasHeader);

                    var isV = true;
                    var i = hasHeader? 1 : 0;
                    try{
                        var split = t[i][2];
                        for(var j=2; j<c-3; j+=2){ //判断是否竖排格式
                            if(t[i][j] != split || t[i][j] != t[i][j+2]){
                                isV = false;
                                break;
                            }
                        }
                    }catch(e){
                        isV = false;
                    }

                    var s = '';
                    if(isV){
                        r = hasHeader? r-1 : r;
                        for(var i=0; i<blocks.length; i++){
                            for(var j=c-2; j>0; j-=2){
                                var k = hasHeader? 1 : 0;
                                for(; k<r; k++){
                                    var t = blocks[i].substr(k * (c+1) + j, 1)
                                    var cc = t.charCodeAt(0);
                                    t = cc>65248 && cc<65248+127? String.fromCharCode(cc - 65248) : t; //将一些全角字符转换为半角
                                    s += t;
                                }
                            }
                        }

                        for(var i=0; i<vPost.replaces.length; i+=2){
                            var rp = vPost.replaces[i].replace(/\\/g, '');
                            s = s.replace(new RegExp(vPost.replaces[i+1], 'g'), rp);
                        }

                        return vPost.trim(s);
                    }else{
                        return text;
                    }
                }
            }
        </script>
    </head>
    <body>
        <textarea id="input"  style="width:650px; height:180px;"></textarea>
        <p style="font:12px/20px '宋体'; color:#666;">在竖排转横排时,如果待转换的文字是有多块组成的,那么块与块之间必须要有一个空行隔开,否则无法正常转换.</p>
        <p style="margin:5px 0;">
            <select id="r">
                <option value="5">5行</option>
                <option value="8">8行</option>
                <option value="10" selected="selected">10行</option>
                <option value="15">15行</option>
                <option value="20">20行</option>
                <option value="25">25行</option>
                <option value="30">30行</option>
                <option value="50">50行</option>
            </select>
            <select id="c">
                <option value="0">自动计算列</option>
                <option value="5">5列</option>
                <option value="8">8列</option>
                <option value="10">10列</option>
                <option value="15">15列</option>
                <option value="20">20列</option>
                <option value="25">25列</option>
                <option value="30">30列</option>
                <option value="50">50列</option>
            </select>
            <select id="sty">
                <option value="0">粗实线边框</option>
                <option value="1">双实线边框</option>
                <option value="2">细实线边框</option>
                <option value="3">无边框粗实线</option>
                <option value="4">无边框双实线</option>
                <option value="5">无边框细实线</option>
            </select>
            <input type="button" onclick="document.getElementById('output').value = vPost.convertV(document.getElementById('input').value, document.getElementById('r').value, document.getElementById('c').value, document.getElementById('sty').value)" value="横排转竖排" style="width:120px; height:28px;" />
            <input type="button" onclick="document.getElementById('output').value = vPost.convertH(document.getElementById('input').value)" value="竖排转横排" style="width:120px; height:28px;" />
        </p>
        <textarea id="output" style="width:650px; height:400px;"></textarea>
    </body>
</html>
  • 描述: 界面
  • 大小: 41.1 KB
分享到:
评论

相关推荐

    赛音蒙文网页排版转换工具

    赛音蒙文网页排版转换工具便支持这种竖排布局,使得用户可以在电子文档中重现这种独特的文字呈现方式,这对于保留和传承民族文化具有重要意义。 工具的亮点之一是其提供了多种蒙文输入法的转换功能。蒙古文有多种...

    HTML5实现图标会旋转的竖向导航菜单.rar

    示例可能使用了图标字体库,如Font Awesome或Ionicons,它们将图标表示为文字,可以像普通字体一样缩放和着色,且兼容性好,适用于各种浏览器。 7. ARIA属性: 为了增强无障碍性(Accessibility),可以使用ARIA...

    日语OCR工具-从图像解析日语

    然后,它将识别出的字符与内部字库进行比较,找出最接近的匹配,从而将图像中的字符转换为可编辑的文本格式。 这款特定的日语OCR工具是基于Java开发的,从文件列表中的"KanjiTomo.jar"可以看出,这是一个Java ...

    小书匠markkown编辑器 v2.0.1官方版.zip

    实时的同步预览,编辑器同步滚动,预览区同步滚动,更提供了markdown文件与转换后的html文件sourceMap映射功能 多种主题选择 用户可以选择多达20多种系统内置的主题 竖排写作 专门针对CJK字符进行了优化,并实现...

    一站式网页设计零基础HTML5布局实例教程(第十节PS篇)

    1. **创建文本**:在Photoshop中,可以使用“文字工具”(T图标)来创建横排或竖排的文本。点击画布并输入文本,即可创建一个新的文本图层。 2. **格式化文本**:可以调整字体、大小、颜色、对齐方式、行距、字距等...

    js设置文字颜色的方法示例

    最后,示例中还提供了几个在线的文字特效工具链接,包括在线特效文字、彩色文字生成工具、CSS样式工具、仿古书排版文字竖排转换工具以及线条字生成工具,这些工具可以帮助开发者快速创建各种文本特效。 总结一下,...

    Emeditor 简体中文插件集 Build 5

    文字转换为表格 删除行末空格 块粘帖 数字排序(升序) 数字排序(降序) 字符排序(升序) 字符排序(降序) 查找左括号 查找右括号 自动复制 自动完成 自动追加 左对齐 右对齐 居中 转为竖排 ...

    CSS+DIV实现的导航栏

    例如,当屏幕宽度小于600px时,将横排导航栏转换为竖排: ```css @media (max-width: 600px) { .navbar { flex-direction: column; /* 使元素垂直堆叠 */ } .nav-item { float: none; clear: none; } } ``...

    趣味的网站

    - **技术原理**:通过文本处理技术,将现代横排文字转换为古书竖排格式,增加传统文化氛围。 - **用户界面**:提供文本输入框及转换按钮,便于用户操作。 ### 9. 在线钢琴演奏 - **技术实现**:利用HTML5 Audio API...

    江苏省成人计算机统考上机操作模拟题.pdf

    3. 转换文本为SmartArt:将第2张幻灯片的文本转换为SmartArt图形,布局为“基本循环”,设置样式为“白色轮廓”,颜色为“渐变范围-强调文字颜色1”。 4. 超链接设置:为目录幻灯片的文本标题添加超链接,链接到...

    初探利用Python进行图文识别(OCR)

    OCR(Optical Character Recognition)技术是一种将图像中的文字转换为可编辑文本的计算机技术。它通过扫描、图像处理等步骤,将纸质文档、图片中的文字信息转化为可搜索、编辑的电子文本。Python作为一种强大的编程...

    itextasian-1.5.2.jar

    而`itext5-xmlworker-5.5.11.jar`则用于将HTML和CSS转换为PDF,这在生成基于网页内容的PDF文档时非常有用。这些asc文件则是GPG签名,用于验证下载的jar文件的完整性和安全性。 利用iTextAsian,开发者可以轻松地在...

    21春南开大学《信息处理技术》在线作业-2参考答案.docx

    15. **Word文本框操作**:Word提供了横排和竖排两种类型的文本框,可以在文本框中插入图片,并可以通过改变文字方向实现横排和竖排的转换。 16. **精确设置段落缩进**:在Word中,使用段落对话框可以精确设置段落...

    Word表格使用技巧

    竖排单元格文字 Word表格每一个单元格都可以独立设置段落格式。只要选中并右击某一单元格,再选择“文字方向”,并在打开的“文字方向-表格单元格”对话框中选择一种排列方式即可。 制作属于自己的报纸 利用Word...

    教师招聘考试《计算机》试题及答案.pdf

    3. Caption属性:在VB(Visual Basic)中,Caption属性用于设置控件的标题或文字显示。 4. VB事件:在VB中,Click事件表示用户点击对象时触发的事件。 5. RAM:Random Access Memory,随机访问存储器,断电会丢失...

    flash shiti

    16.lash能将ASCII代码转换成对应的字符,也可以返回字符对应的ASCII码。Chr表示什么? A. 转换ASCII码为字符 B. 转换字符为ASCII码 C. 转换字符为海明码 D. 转换海明码为字符 17.Flash 菜单File→Print的快捷...

Global site tag (gtag.js) - Google Analytics