纯文本转超文本
2015-12-09 17:35
489 查看
本文介绍一种将纯文本转换成超文本的方法,使其转成的超文本内容在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实现
纯文本转超文本JavaScript实现:
该转换可采用正则表达式搜索替换来实现,具体规则如下:
将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));
相关文章推荐
- 在Windows 8.1的IE 11中屏蔽双击放大功能
- 通过Mootools 1.2来操纵HTML DOM元素
- WEB标准网页布局中尽量不要使用的HTML标签
- Flash 与 html 的一些实用技巧
- html工作中表格<tbody>标签的使用技巧
- HTML 向 XHTML1.0 兼容性指导
- C#自写的一个HTML解析类(类似XElement语法)
- 没有文件大小限制并免费的PDF到HTML转换工具
- PostgreSQL ERROR: invalid escape string 解决办法
- JavaScript与HTML结合的基本使用方法整理
- C#实现txt定位指定行完整实例
- css实现气泡框效果(实例加图解)
- TXT转HTM、HTML「TXT转网页」的vbs实现代码
- html链接与文本标签们
- html活用软字符连接符
- 浅谈html中id和name的区别实例代码
- HTML <!DOCTYPE> 标签
- asp中实现清除html的函数
- C#处理文本文件TXT实例详解