·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]AS3中文的应用转拼音、首字母、中文排序完整代码示例

时间:2012-11-20 01:10cnblogs.com
[AS3]AS3中文的应用转拼音、首字母、中文排序完整代码示例,AS3中文,as3转拼音,as3中文排序

[AS3]AS3中文的应用转拼音、首字母、中文排序完整代码示例

  1. package 
  2. { 
  3. import flash.utils.ByteArray; 
  4.  
  5. /** 
  6. * 模块功能: 
  7. * 修改时间:2010-11-16 下午03:08:25 
  8. * 程序编制: 
  9. * trace(Chinese.convertChar("中国人").toUpperCase(), Chinese.convertString("中国人")); 
  10.    //-- 
  11.    var arr1:Array = ["中国人", "日本人", "韩国人"]; 
  12.    trace(arr1); 
  13.    //trace(Chinese.sort(arr1)); 
  14.    var arr2:Array = [{label:"中国人2"}, {label:"日本人2"}, {label:"韩国人2"}]; 
  15.    trace(arr2); 
  16.    trace(Chinese.sort(arr2, "label")); 
  17. * 
  18. */ 
  19. public class Chinese 
  20. { 
  21.    public function Chinese() 
  22.    { 
  23.     throw new Error("cuplayer.com单例..."); 
  24.    } 
  25.  
  26.    /** 
  27.    * 获取一串中文的拼音字母 
  28.    * @param chinese Unicode格式的中文字符串 
  29.    * @return 
  30.    * 
  31.    */   
  32.    public static function convertString(chinese:String):String 
  33.    { 
  34.     var len:int = chinese.length; 
  35.     var ret:String = ""; 
  36.     for (var i:int = 0; i < len; i++) 
  37.     { 
  38.      ret += convertChar(chinese.charAt(i)); 
  39.     } 
  40.     return ret; 
  41.    } 
  42.  
  43.    /** 
  44.    * 获取中文第一个字的拼音首字母 
  45.    * @param chineseChar 
  46.    * @return 
  47.    * 
  48.    */   
  49.    public static function convertChar(chineseChar:String):String 
  50.    { 
  51.     var bytes:ByteArray = new ByteArray 
  52.     bytes.writeMultiByte(chineseChar.charAt(0), "cn-gb"); 
  53.     var n:int = bytes[0] << 8; 
  54.     n += bytes[1]; 
  55.     if (isIn(0xB0A1, 0xB0C4, n)) 
  56.      return "a"; 
  57.     if (isIn(0XB0C5, 0XB2C0, n)) 
  58.      return "b"; 
  59.     if (isIn(0xB2C1, 0xB4ED, n)) 
  60.      return "c"; 
  61.     if (isIn(0xB4EE, 0xB6E9, n)) 
  62.      return "d"; 
  63.     if (isIn(0xB6EA, 0xB7A1, n)) 
  64.      return "e"; 
  65.     if (isIn(0xB7A2, 0xB8c0, n)) 
  66.      return "f"; 
  67.     if (isIn(0xB8C1, 0xB9FD, n)) 
  68.      return "g"; 
  69.     if (isIn(0xB9FE, 0xBBF6, n)) 
  70.      return "h"; 
  71.     if (isIn(0xBBF7, 0xBFA5, n)) 
  72.      return "j"; 
  73.     if (isIn(0xBFA6, 0xC0AB, n)) 
  74.      return "k"; 
  75.     if (isIn(0xC0AC, 0xC2E7, n)) 
  76.      return "l"; 
  77.     if (isIn(0xC2E8, 0xC4C2, n)) 
  78.      return "m"; 
  79.     if (isIn(0xC4C3, 0xC5B5, n)) 
  80.      return "n"; 
  81.     if (isIn(0xC5B6, 0xC5BD, n)) 
  82.      return "o"; 
  83.     if (isIn(0xC5BE, 0xC6D9, n)) 
  84.      return "p"; 
  85.     if (isIn(0xC6DA, 0xC8BA, n)) 
  86.      return "q"; 
  87.     if (isIn(0xC8BB, 0xC8F5, n)) 
  88.      return "r"; 
  89.     if (isIn(0xC8F6, 0xCBF0, n)) 
  90.      return "s"; 
  91.     if (isIn(0xCBFA, 0xCDD9, n)) 
  92.      return "t"; 
  93.     if (isIn(0xCDDA, 0xCEF3, n)) 
  94.      return "w"; 
  95.     if (isIn(0xCEF4, 0xD188, n)) 
  96.      return "x"; 
  97.     if (isIn(0xD1B9, 0xD4D0, n)) 
  98.      return "y"; 
  99.     if (isIn(0xD4D1, 0xD7F9, n)) 
  100.      return "z"; 
  101.     return "\0"; 
  102.    } 
  103.  
  104.    private static function isIn(from:int, to:int, value:int):Boolean 
  105.    { 
  106.     return ((value >= from) && (value <= to)); 
  107.    } 
  108.  
  109.    /** 
  110.    * 是否为中文 
  111.    * @param chineseChar 
  112.    * @return 
  113.    * 
  114.    */   
  115.    public static function isChinese(chineseChar:String):Boolean 
  116.    { 
  117.     if (convertChar(chineseChar) == "\0") 
  118.     { 
  119.      return false; 
  120.     } 
  121.     return true; 
  122.    } 
  123.  
  124.    /** 
  125.    * 中文排序 
  126.    * @param arr 列表数组 
  127.    * @param key 键名(键值数组时使用) 
  128.    * @return 
  129.    * 
  130.    */   
  131.    public static function sort(arr:Array, key:String = ""):Array 
  132.    { 
  133.     var byte:ByteArray = new ByteArray(); 
  134.     var sortedArr:Array = []; 
  135.     var returnArr:Array = []; 
  136.     var item:*; 
  137.     for each (item in arr) 
  138.     { 
  139.      if (key == "") 
  140.      { 
  141.       byte.writeMultiByte(String(item).charAt(0), "gb2312"); 
  142.      } 
  143.      else 
  144.      { 
  145.       byte.writeMultiByte(String(item[key]).charAt(0), "gb2312"); 
  146.      } 
  147.     } 
  148.     byte.position = 0; 
  149.     var len:int = byte.length / 2; 
  150.     for (var i:int = 0; i < len; i++) 
  151.     { 
  152.      sortedArr[sortedArr.length] = {a: byte[i * 2], b: byte[i * 2 + 1], c: arr[i]}; 
  153.     } 
  154.     sortedArr.sortOn(["a", "b"], [Array.DESCENDING | Array.NUMERIC]); 
  155.     for each (var obj:Object in sortedArr) 
  156.     { 
  157.      returnArr[returnArr.length] = obj.c; 
  158.     } 
  159.     return returnArr; 
  160.    } 
  161. } 
  162. } 

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器