这段javascript 是什么意思?

ipbdq 2010-03-19 05:13:27
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); });
};


请大侠帮忙告知这段代码是什么意思?(尤其是红色的部分)

如果翻译成php应该怎么写?
...全文
353 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
SIOSXIAOQIANG 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zyzy15 的回复:]
HTML code

<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</di……
[/Quote]
一下就叫人明白了。谢谢。
jonah_lin 2010-03-25
  • 打赏
  • 举报
回复
好折腾的写法,看的云里雾里
zyzy15 2010-03-24
  • 打赏
  • 举报
回复

<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>

能看懂了不?
真够折腾的,我自己也算锻炼了
梅雪香 2010-03-21
  • 打赏
  • 举报
回复
String.prototype.rot13 = function() {
return this.replace(/([a-mA-M])|([n-zN-Z])/g, function(a,b,c) {
return String.fromCharCode( (b||c).charCodeAt(0) + (b?13:-13) );
});
};

这就是个很简单的字符串转换方法
alert('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.rot13());

一运行就知道什么意思了
prototyper 2010-03-20
  • 打赏
  • 举报
回复
可逆?多谢,收藏了.......
lanxuexing 2010-03-20
  • 打赏
  • 举报
回复
学习了。。
Geetzy 2010-03-20
  • 打赏
  • 举报
回复
学习了。
ipbdq 2010-03-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 kingwolf_javascript 的回复:]
为什么要把代码搞得那么复杂啊
[/Quote]

您可以帮忙写一下么??
浴火_凤凰 2010-03-20
  • 打赏
  • 举报
回复
为什么要把代码搞得那么复杂啊
wuyufeixue 2010-03-20
  • 打赏
  • 举报
回复
这样的代码在公司好像是要挨批评的吧?
zyzy15 2010-03-19
  • 打赏
  • 举报
回复
(c <= "Z" ? 90 : 122)
这一部分是说如果c是大写字母,则结果为90(Z的unicode字符值);
如果是小写字母,则结果为122(z的unicode字符值)
ipbdq 2010-03-19
  • 打赏
  • 举报
回复
我把PHP写成这样


function rot($c)
{
$ci=$c <= "Z" ? 90 : 122;
echo $c." Z ".$ci."<br>";
$cx=ord($c)+13;

if ($ci>=$cx)
{
$rti=ord($c);
}
else
{
$rti=ord($c)-26;
}
return chr($rti);

}

不知道错在哪里啊
jaoooo 2010-03-19
  • 打赏
  • 举报
回复
复合判断

1判断变量c 和Z比较是否为true true:返回90 否则返回122
2变量c转化为字符编码+13
90或122 与 编码比较 大 返回c 否则c-26
  • 打赏
  • 举报
回复
v=(c <= "Z" ? 90 : 122)

三目运算.相当于

if(c <= "Z"){
v = 90
}else{
v = 122
}
zyzy15 2010-03-19
  • 打赏
  • 举报
回复
charCodeAt 方法
返回一个整数,代表指定位置上字符的 Unicode 编码。

strObj.charCodeAt(index)

参数
strObj

必选项。任何 String 对象或文字。

index

必选项。将被处理的字符的从零开始计数的编号。有效值为 0 到字符串长度减 1 的数字。
zyzy15 2010-03-19
  • 打赏
  • 举报
回复
fromCharCode 方法
从一些 Unicode 字符值中返回一个字符串。

String.fromCharCode([code1[, code2[, ...[, codeN]]]])

参数
String

必选项。为 String 对象。

code1, . . . , codeN

可选项。是要转换为字符串的 Unicode 字符值序列。如果没有给出参数,结果为空字符串。

说明
在调用 fromCharCode 前不必创建 String 对象。

在下面的例子中,test 包含字符串 "plain":

var test = String.fromCharCode(112, 108, 97, 105, 110);

87,925

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧