87,925
社区成员
发帖
与我相关
我的任务
分享
<div>123456789<FONT COLOR="red">0</FONT>123456789<FONT COLOR="red">0</FONT>123456789<FONT COLOR="red">0</FONT>123456789<FONT COLOR="red">0</FONT>123456789<FONT COLOR="red">0</FONT>12</div>
<div id="div1">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz</div>
<div id="div2"></div>
<SCRIPT LANGUAGE="JavaScript">
<!--
String.prototype.rot13 = function(){
return this.replace(/[a-zA-Z]/g, function(c){
return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26); });
};
div2.innerHTML = div1.innerHTML.rot13();
//-->
// "/[a-zA-Z]/g":正则表达式,匹配所有大小写的英文字母
/*
(c <= "Z" ? 90 : 122) => part1
这一部分是说如果c是大写字母,则结果为90(Z的unicode字符值);
如果是小写字母,则结果为122(z的unicode字符值)
(c = c.charCodeAt(0) + 13) => part2
这一段是说将c赋值为它本身unicode字符值+13的数值
如果c="a"的话,赋值后c="n 的unicode字符值"
part1 >= part2 ? c : c - 26
这一段跟part1一样是三目运算,满足?前的条件则结果是c,否则结果是c-26
最后这个数值作为 String.fromCharCode()的参数,返回一个字母
这段代码意思是说:
字符串中字母向后推13位(part2的值),如果超过了z或Z(part1的值),那么就从a或A开始再算
就是个不改变字母大小写的循环位移
*/
</SCRIPT>