字符串中全角半角之间的转换

  前几天,在做表单验证的时候,发现用户在输入表单内容的时候,正常情况下都是半角输入,但是也有可能是全角输入,所以就牵扯到全角输入内容的验证,这里便提供全角和半角之间的转换函数,与大家分享一下:

  1、js判断文字是全角还是半角:

1 str="中文;;a"   
2 alert(str.match(/[\u0000-\u00ff]/g))   //半角  
3 alert(str.match(/[\u4e00-\u9fa5]/g))   //中文  
4 alert(str.match(/[\uff00-\uffff]/g))   //全角

  2、全角与半角之间的相互转换:

    首先,先得明确以下信息:

    a.全角空格为12288,半角空格为32;

    b.其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248;

  半角转换为全角函数:

 1 function ToDBC(txtstring) { 
 2   var tmp = ""; 
 3   for(var i=0;i<txtstring.length;i++{ 
 4     if(txtstring.charCodeAt(i)==32){ 
 5       tmp= tmp+ String.fromCharCode(12288); 
 6     } 
 7     if(txtstring.charCodeAt(i)<127){ 
 8       tmp=tmp+String.fromCharCode(txtstring.charCodeAt(i)+65248); 
 9     } 
10   } 
11   return tmp; 
12 } 

  上面用到了js的charCodeAt() 方法与fromCharCode() 方法。

  charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。

  fromCharCode() 可接受一个指定的 Unicode 值,然后返回一个字符串。

  全角转换为半角函数:

 1 function ToCDB(str) { 
 2   var tmp = ""; 
 3   for(var i=0;i<str.length;i++){ 
 4     if (str.charCodeAt(i) == 12288){
 5       tmp += String.fromCharCode(str.charCodeAt(i)-12256);
 6       continue;
 7     }
 8     if(str.charCodeAt(i) > 65280 && str.charCodeAt(i) < 65375){ 
 9       tmp += String.fromCharCode(str.charCodeAt(i)-65248); 
10     } 
11     else{ 
12       tmp += String.fromCharCode(str.charCodeAt(i)); 
13     } 
14   } 
15   return tmp 
16 } 

  这便是这次项目的收获,希望可以帮助到有类似需求的朋友。

 

posted @ 2018-02-01 15:42  ~逍遥★星辰~  阅读(810)  评论(0编辑  收藏  举报