規(guī)律:半角空格的 charCode 為 32, 全角空格為 12288. 其他半角字符 ( 33 – 126 ) 與全角 ( 65281 – 65374 ) 的對(duì)應(yīng)關(guān)系是:均相差 65248.

          找好規(guī)律,代碼就好寫了:

          var hash = {'32' : '\u3000'};
          // 半角轉(zhuǎn)全角
          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' : ' '};
          // 全角轉(zhuǎn)半角
          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('');
          }
          上面的代碼會(huì)將 33 - 126 中間的符號(hào)也轉(zhuǎn)換。很多時(shí)候,這并不是我們需要的(比如將 @ 轉(zhuǎn)換為 @)。下面的代碼侵入性更小:

          var hash = {};
          // 半角轉(zhuǎn)全角。僅轉(zhuǎn)換 [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('');
          }

          posted on 2010-10-11 09:59 -274°C 閱讀(330) 評(píng)論(0)  編輯  收藏 所屬分類: web前端

          常用鏈接

          留言簿(21)

          隨筆分類(265)

          隨筆檔案(242)

          相冊(cè)

          JAVA網(wǎng)站

          關(guān)注的Blog

          搜索

          •  

          積分與排名

          • 積分 - 916114
          • 排名 - 40

          最新評(píng)論

          主站蜘蛛池模板: 南川市| 屏东县| 二连浩特市| 科技| 义马市| 沁源县| 江阴市| 屯昌县| 雷波县| 朝阳区| 沧州市| 资兴市| 常宁市| 巴塘县| 犍为县| 岗巴县| 龙川县| 洱源县| 麻江县| 米泉市| 九龙坡区| 临朐县| 禄劝| 石阡县| 芮城县| 六盘水市| 通山县| 安平县| 四会市| 民丰县| 周宁县| 蒙自县| 和平区| 定陶县| 错那县| 高雄市| 新竹县| 黄大仙区| 焉耆| 米林县| 定边县|