posts - 241,  comments - 116,  trackbacks - 0

    规律:半角空格的 charCode 为 32, 全角空格为 12288. 其他半角字符 ( 33 – 126 ) 与全 角 ( 65281 – 65374 ) 的对应关系是:均相差 65248.
代码:

var hash = {’32 : ’\u3000’};
// 半角转全角
function sbc2dbc(str) {
   
var ret = [], i = 0, len = str.length, code, chr;
   
for (; i < len; ++i) {
        code
= str.charCodeAt(i);
        chr
= hash[code];
       
if (!chr && code > 31 && code < 127) {
            chr
= hash[code] = String.fromCharCode(code + 65248);
       
}
        ret
[i] = chr ? chr : str.charAt(i);
   
}
   
return ret.join(’’);
}

同理:

var hash = {’12288 :  ’};
// 全角转半角
function dbc2sbc(str) {
   
var ret = [], i = 0, len = str.length, code, chr;
   
for (; i < len; ++i) {
        code
= str.charCodeAt(i);
        chr
= hash[code];
       
if (!chr && code > 65280 && code < 65375) {
            chr
= hash[code] = String.fromCharCode(code - 65248);
       
}
        ret
[i] = chr ? chr : str.charAt(i);
   
}
   
return ret.join(’’);
}

上面的代码会将 33 - 126 中间的符号也转换。很多时候,这并不是 我们需要的(比如将 @ 转换为 @)。下面的代码侵入性更小:

var hash = {};
// 半角转全角。仅转换 [0-9a-zA-Z]
function sbc2dbc_w(str) {
   
var ret = [], i = 0, len = str.length, code, chr;
   
for (; i < len; ++i) {
        code
= str.charCodeAt(i);
        chr
= hash[code];
       
if (!chr &&
           
(47 < code && code < 58 ||
             
64 < code && code < 91 ||
             
96 < code && code < 123)) {
            chr
= hash[code] = String.fromCharCode(code + 65248);
       
}
        ret
[i] = chr ? chr : str.charAt(i);
   
}
   
return ret.join(’’);
}

求一个JS实现无缝滚动的代码~~~~

IE与FireFox下用JS触发鼠标点击事件有什么不同?

求助,如何使用脚本编码器Script Encoder对JS进行编码加密?

怎么用JS获取获取浏览器地址栏参数?

请问怎么用JS发送邮件?


posted on 2010-03-14 15:09 墙头草 阅读(277) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 
人人游戏网 软件开发网 货运专家