源码 | 书库 | 模板 | 特效 | 广告 | 素材 | 工具 | 必备 | ALEXA | 字体
会员投稿 投稿指南 RSS订阅
您当前的位置是:主页>网络编程>Javascript教程>

JS教程:JavaScript全半角转换

www.jz123.cn  2010-02-05   来源:   中国建站    责任编辑(袁袁)    我要投递新闻

  规律:半角空格的 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 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 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();

  }

上一篇:让JavaScript拯救HTML5的离线存储 下一篇:第一个JavaScript入门基础 document.write输出

评论总数:0 [ 查看全部 ] 网友评论


关于我们隐私版权广告服务友情链接联系我们网站地图