谁帮我解释下这个js代码

hjjk123 2010-02-01 02:30:29
这个是把全角转半角的代码
有几处不是很明白

<script language=javascript>   

String.prototype.dbc2sbc = function ()
{
return this.replace(/[\uff01-\uff5e]/g,
function(a){
return String.fromCharCode(a.charCodeAt(0)-65248);
}).replace(/\u3000/g," ");
}
document.write("ABC 123,我们都是好朋友".dbc2sbc());
</script>
<script language=javascript>
String.prototype.dbc2sbc = function ()
{
return this.replace(/[\uff01-\uff5e]/g,
function(a) //不明白这里的a怎么没定义啊?指的是什么呢
{

return String.fromCharCode(a.charCodeAt(0)-65248);
}).replace(/\u3000/g," ");
}
document.write("ABC 123,我们都是好朋友".dbc2sbc());
</script>


还一个地方是
return this.replace(/[\uff01-\uff5e]/g,
这里的[\uff01-\uff5e]/
是什么意思
谢谢啦
...全文
148 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjjk123 2010-02-01
  • 打赏
  • 举报
回复
终于搞懂了
谢啦
hjjk123 2010-02-01
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 awusoft 的回复:]
没少
[/Quote]
恩 我又看了 是我看错了

但 我这怎么o=0啊
awusoft 2010-02-01
  • 打赏
  • 举报
回复
没少
hjjk123 2010-02-01
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 awusoft 的回复:]
JScript code
name='123154';
uw=name.replace(/(12)(31)/g,function(word,d,i,o)
{
alert(d);
alert(i);
alert(o);return word.substring(0,1).toUpperCase()+word.su?-
[/Quote]


太感谢了
但你这有个小错误 ----笔误吧....

你的 replace 少了个 闭合括号

这个小误
有个有意思的 结果
结果 d=12
i=31
o=0
也许是少了个括号 无法确认是最后一个参数 默认为0....
刚学 js 谢谢 awusoft 跟帖 帮助 嘿嘿
如果 加入第五个参数 k
这时打出的k=123154

这时 最后的参数 是 整个字符串


谢谢这位大哥 晚上结贴 ....
awusoft 2010-02-01
  • 打赏
  • 举报
回复
正则表达式有一种叫分组的概念,你可以去看看
awusoft 2010-02-01
  • 打赏
  • 举报
回复

name = '123154';
uw=name.replace(/(12)(31)/g, function(word,d,i,o){
alert(d);
alert(i);
alert(o);
return word.substring(0,1).toUpperCase()+word.substring(1);}
);
SambaGao 2010-02-01
  • 打赏
  • 举报
回复
HTML 代码:

<button>Change colors</button>
<span></span>
<div></div>
<div></div>

<div></div>
<div></div>
<div id="stop">Stop here</div>
<div></div>

<div></div>
<div></div>
jQuery 代码:

$("button").click(function () {
$("div").each(function (index, domEle) {
// domEle == this
$(domEle).css("backgroundColor", "yellow");
if ($(this).is("#stop")) {
$("span").text("Stopped at div index #" + index);
return false;
}
});
});

看看js吧。好多呢
awusoft 2010-02-01
  • 打赏
  • 举报
回复


name = 'aaa bbb ccc';
uw=name.replace(/\b\w+\b/g, function(word,i){
alert(i);
return word.substring(0,1).toUpperCase()+word.substring(1);}
);
hjjk123 2010-02-01
  • 打赏
  • 举报
回复
恩 但这段话 有一个地方 不知道怎么用

接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。


就是当函数是多参的时候。。。
awusoft 2010-02-01
  • 打赏
  • 举报
回复
注意:ECMAScript v3 规定,replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。
awusoft 2010-02-01
  • 打赏
  • 举报
回复
这个function(a)就是表示找的时候,就把这个值传进来.

你可以参考中的String的replace方法的解释
http://www.w3school.com.cn/js/jsref_replace.asp
hjjk123 2010-02-01
  • 打赏
  • 举报
回复
谢谢这位大哥

我现在疑惑的是 代码 中 的 那个问题

麻烦给看看吧

具体的转换原理 我明白了 呵呵
awusoft 2010-02-01
  • 打赏
  • 举报
回复
给你找了一个,自己去看看吧
http://blog.sina.com.cn/s/blog_3eaf68c70100b1nl.html
hjjk123 2010-02-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 awusoft 的回复:]
[\uff01-\uff5e]UTF-8的一个字符集


比如说
[a-z]
代表了a-z
\uff01-\uff5e
就是\uff01-\uff5e
猜测是对应的全角字符吧


[/Quote]
恩 这个问题明白了
但代码的那个问题就是想不明白
那是的a应该是代表那个字符串
但在js中有什么规定吗
没对a定义 怎么就一定是代指的那个字符串呢
awusoft 2010-02-01
  • 打赏
  • 举报
回复
给你找了一个,自己去看看吧
http://blog.sina.com.cn/s/blog_3eaf68c70100b1nl.html
awusoft 2010-02-01
  • 打赏
  • 举报
回复
给你找了一个,自己去看看吧
\uff01-\uff5e
awusoft 2010-02-01
  • 打赏
  • 举报
回复
[\uff01-\uff5e]UTF-8的一个字符集


比如说
[a-z]
代表了a-z
\uff01-\uff5e
就是\uff01-\uff5e
猜测是对应的全角字符吧

81,092

社区成员

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

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