JS如何判斷文字是全角還是半角


載自:http://www.php.cn/js-tutorial-362638.html

全角:是一種電腦字符,是指一個全角字符占用兩個標准字符(或兩個半角字符)的位置。全角占兩個字節。半角:是指一個字符占用一個標准的字符位置。半角占一個字節。接下來通過本文給大家介紹JS驗證全角與半角及相互轉化的知識,需要的朋友參考下吧

1.什么是全角和半角?

全角:是一種電腦字符,是指一個全角字符占用兩個標准字符(或兩個半角字符)的位置。全角占兩個字節。

漢字字符和規定了全角的英文字符及國標GB2312-80中的圖形符號和特殊字符都是全角字符。在全角中,字母和數字等與漢字一樣占據着等寬的位置。

半角:是指一個字符占用一個標准的字符位置。半角占一個字節。

半角就是 ASCII 方式的字符,在沒有漢字輸入法起作用的時候,輸入的字母、數字和字符都是半角的。

每個半角字符只占用一字節的空間(一字節有8位,共256個編碼空間)。漢語、日語、及朝鮮文等象形字語言的字庫量遠大於256個編碼空間,所以改用兩個字節來儲存。同時,由於中日韓等象形文字的書寫習慣,如果統一使用全角字符的話,排列起來也顯得整齊。

為了排列整齊,英文和其它拉丁文的字符和標點也提供了全角格式。

2.全角和半角的區別

全角和半角主要是針對標點符號來說的,全角標點占兩個字節,半角占一個字節。不管是半角還是全角,漢字都要占兩個字節。

3.js判斷輸入的文字是全角還是半角?

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

4.js對全角與半角的相互轉化

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

a.全角空格為12288,半角空格為32

b.其他字符半角(33-126)與全角(65281-65374)的對應關系是:均相差65248

半角轉化為全角

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

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

charCodeAt() 方法可返回指定位置的字符的 Unicode 編碼。這個返回值是 0 - 65535 之間的整數

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

想詳細的了解charCodeAt() 方法與fromCharCode()方法,可以點擊《JavaScript charCodeAt() 方法》與《JavaScript fromCharCode() 方法》。

全角轉換為半角

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM