JavaScript中的16进制字符(改进)


Posted in Javascript onNovember 21, 2011

原始的代码:

//将文字转换为16进制 
function textToSix(str) { 
return escape(str).replace(/%/g, function () { 
return "\\"; 
}).toLowerCase(); 
}

改进后的:
//将文字转换为16进制 
function textToHex(str) { 
//escape对0-255以外的unicode值进行编码时输出%u****格式,例如:%u6267%u624b%u6cea%u773c 
//将其中的%替换成\就是十六进制的 
if (typeof str == "string") { 
return escape(str).replace(/%/g, function () { 
return "\\"; 
}).toLowerCase(); 
} else { 
return null; 
} 
}

主要是增加了一个验证是否为字符串的验证。

在完善了这个方法之后,我又觉得是不是要改进下面这个方法:

//将16进制表示为文字 
function sixToText(str) { 
return unescape(str); 
}

本意是将"\unnn"之类的字符转换回文字。其实,只需看看unescape这个方法的原理(工作原理:通过找到形式为 %xx 和 %uxxxx 的字符序列(x 表示十六进制的数字),用 Unicode 字符 \u00xx 和 \uxxxx 替换这样的字符序列进行解码。来自百度百科的解释)。就会知道我完全是多此一举。因为浏览器是可以解析十六进制的字符的。例如:

在IE9中:

JavaScript中的16进制字符(改进)

在Chrome中:

JavaScript中的16进制字符(改进)

再补充另外一点收获吧。其实在做这个解析被我替换后的字符时,我最初的想法是将"\"这个字符在替换回"%",然后再用unescape这个解码函数来解析字符。然而,当我在我想将"\"替换为"%"却发现了下面的一个比较有意思的现象:像“\”这个字符如果后面没有碰到“t”,"n"之类可以和t结合在一起组成转意字符的话,是会被浏览器忽略的。用实验来验证我的结论吧:

在IE9中调试:

JavaScript中的16进制字符(改进)

在Chrome下调试:

JavaScript中的16进制字符(改进)

在这里定义了一个变量,变量中含有一些平时可能很少出现的字符"\",调试的时候,看看上面的提示了吗,浏览器很智能的忽略掉了特殊位置的字符。因此在将一些看似很平常的字符(例如文件路径等)放在js的变量中,可能输出来的结果并不是预期的。

Javascript 相关文章推荐
导入extjs、jquery 文件时$使用冲突问题解决方法
Jan 14 Javascript
javascript获取元素偏移量的方法有哪些
Jun 24 Javascript
JavaScript前补零操作实例
Mar 11 Javascript
JavaScript动态改变div属性的实现方法
Jul 22 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
Aug 05 Javascript
jquery带下拉菜单和焦点图代码分享
Aug 24 Javascript
详解 javascript中offsetleft属性的用法
Nov 11 Javascript
JS实现页面内跳转的简单代码
Sep 03 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
Oct 12 Javascript
JavaScript中AOP的实现与应用
May 06 Javascript
vue在响应头response中获取自定义headers操作
Jul 24 Javascript
详解nginx配置vue h5 history去除#号
Nov 09 Javascript
日期处理的js库(迷你版)--自建js库总结
Nov 21 #Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
Nov 21 #Javascript
页面调用单个swf文件,嵌套出多个方法。
Nov 21 #Javascript
javascript中xml操作实现代码
Nov 21 #Javascript
js调用activeX获取u盘序列号的代码
Nov 21 #Javascript
15个款优秀的 jQuery 图片特效插件推荐
Nov 21 #Javascript
jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
Nov 21 #Javascript
You might like
各种咖啡的英文名子是什么
2021/03/03 新手入门
CodeIgniter框架中_remap()使用方法2例
2014/03/10 PHP
php将print_r处理后的数据还原为原始数组的解决方法
2016/11/02 PHP
JavaScript的类型简单说明
2010/09/03 Javascript
Javascript中设置默认参数值示例
2014/09/11 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
webpack4 处理SCSS的方法示例
2018/09/03 Javascript
微信小程序自定义可滑动日历界面
2018/12/28 Javascript
浅谈React Native 传参的几种方式(小结)
2019/05/21 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
VUE中V-IF条件判断改变元素的样式操作
2020/08/09 Javascript
详解vue中使用transition和animation的实例代码
2020/12/12 Vue.js
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
王纯业的Python学习笔记 下载
2007/02/10 Python
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
Python+Selenium自动化实现分页(pagination)处理
2017/03/31 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
python递归全排列实现方法
2018/08/18 Python
Python 下载及安装详细步骤
2019/11/04 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
Python实现验证码识别
2020/06/15 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
css3 border-image使用说明
2010/06/23 HTML / CSS
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
Blue Nile蓝色尼罗河香港官网:世界最大在线钻石珠宝销售商
2020/05/07 全球购物
手机业务员岗位职责
2013/12/13 职场文书
感恩寄语大全
2014/04/11 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
产品陈列协议书(标准版)
2014/09/17 职场文书
药品开票员岗位职责
2015/04/15 职场文书
撤诉书怎么写
2015/05/19 职场文书
2016年寒假生活小结
2015/10/10 职场文书
干货:我将这样书写我的演讲稿!
2019/05/09 职场文书
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS