纯文本转超文本
来源:互联网 发布:spss22 mac版教程 编辑:程序博客网 时间:2024/09/21 09:25
本文介绍一种将纯文本转换成超文本的方法,使其转成的超文本内容在HTML页面中预览的效果与原纯文本预览的效果一致。
该转换可采用正则表达式搜索替换来实现,具体规则如下:
- 将HTML中5个基本保留字符(<, >, &, ", ')转换成对应HTML实体("<", ">", "&", """, "'")
- 将连续n(n>=2)个空格符(U+0020)替换为n个非间断空格符(U+00A0)的HTML实体(" ")
- 将制表符(U+0009)替换为n(n一般为2,4或8)个" "
- 将Windows换行符CR LF(U+000D U+000A)或Unix换行符LF(U+000A)替换为HTML换行标签("<br/>")
注:已命名的实体"'"亦可用字符码实体形式“'”表示,以兼容旧版Internet Explorer。
附:
纯文本转超文本Java实现
private static Pattern htmlKeychars=Pattern.compile("[<>&\"']");private static Pattern htmlKeycharsWhitespace=Pattern.compile("\r\n| {1,}|[<>&\"'\t\n]");private static String encodeHTML(String s,Pattern p){Matcher m=p.matcher(s);StringBuffer sb=new StringBuffer(s.length()+(s.length()>>1));String re=null;while(m.find()){String $0=m.group(0);switch($0.charAt(0)){case '<':re="<";break;case '>':re=">";break;case '&':re="&";break;case '"':re=""";break;case '\'':re="'";break;case ' ':re=StringUtils.repeat(" ",$0.length());break;case '\n':case '\r':re="<br/>";break;case '\t':re=" ";break;}m.appendReplacement(sb.append(re), "");}return m.appendTail(sb).toString();}public static String encodeHTML(String s){if(s==null||s.length()==0)return s;return encodeHTML(s,htmlKeycharsWhitespace);}public static String encodeHTMLAttribute(String s){if(s==null||s.length()==0)return s;return encodeHTML(s,htmlKeychars);}
纯文本转超文本JavaScript实现:
(function(global){function StringRepeat(s,c){switch(c){case 0:return "";case 1:return s;case 2:return s+s;default:var r=repeat(s,c>>>1);return (c&1)==0?r+r:r+r+s;}}var repeat=String.prototype.repeat||function repeat(count){if(this==null)throw new TypeError("String.prototype.repeat called on null or undefined");if(count<0||count>0xFFFFFFFF)throw new RangeError("Invalid count value");return StringRepeat(String(s),c>>>0);};var escapeHTML=function(s,r){if(s.length==0)return s;return s.replace(r,function($0){var re="";switch($0.charAt(0)){case '<':re="<";break;case '>':re=">";break;case '&':re="&";break;case '"':re=""";break;case '\'':re="'";break;case ' ':re=repeat.call(" ",$0.length);break;case '\n':case '\r':re="<br/>";break;case '\t':re=" ";break;}return re;});};function encodeHTML(s){return escapeHTML(String(s),/\r\n| {1,}|[<>&"'\t\n]/g);}function encodeHTMLAttribute(s){return escapeHTML(String(s),/[<>&"']/g);}global.encodeHTML=encodeHTML;global.encodeHTMLAttribute=encodeHTMLAttribute;}(this));
0 0
- 纯文本转超文本
- 富文本/超文本
- RTF转纯文本
- ruby html转纯文本
- html 转纯文本,保留br、p
- 发送普通文本和超文本邮件,并且把携带的附件显示在超文本文件中
- CRichEditCtrl粘贴纯文本
- 纯文本的威力
- 抓取纯文本网页
- php输出纯文本
- 对html文本去除标签(超文本去除标签部分)
- html转纯文本后 残留符号代码解决问题
- java PDF转WORD 只适合纯文本
- 纯文本组成的MM
- lucene-索引纯文本文档
- html转换成纯文本
- Vim 纯文本比较 vimdiff
- C#获取属性纯文本
- UART0串口编程系列 串口编程(UART0)之中断方式(一)
- C# 反射 通过类名创建类实例
- 使用系统时间作为创建的文件名
- iOS 分享功能开发
- c++实现的快速排序算法
- 纯文本转超文本
- mac 安装python软件包的工具--easy_install
- TCP/IP详解卷1 读书笔记:第二十一章 TCP超时与重传
- 服务 AIDL 进程优先级
- JavaScript:student-information-system-node-express-mongoose 学生信息管理系统
- UART0串口编程系列 串口编程(UART0)之中断方式(二)
- js 只能输入数字和小数点
- C++primer学习:标准库特殊设施:bitset
- 迭代器 table