Flex中如何得到一个字符的Unicode编码字符码(Unicode character code)的例子

By Minidxer | March 20, 2008

你是否曾经为了取得一个字符的Unicode编码字符码而耗费几分钟(或许是几个小时)来查找?下面是我最近学到的一点小技巧,ActionScript 3.0(包括ActionScript 2.0)的String类中,有一个很不错的函数–charCodeAt(),它可以通过指定某字符串中所要取得字符码字符位置,来得到该字符的Unicode字符码。说的比较简单,那就让我们来看代码吧。


Download: main.mxml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" backgroundColor="white" >        
  3.  
  4.     <mx:Script>
  5.         <![CDATA[
  6.             [Bindable]
  7.             private var charCode:Number = "&".charCodeAt();
  8.         ]]>
  9.     </mx:Script>        
  10.  
  11.     <mx:Label text="@ = {'@'.charCodeAt()}" />
  12.     <mx:Label text="&amp; = {charCode}" />        
  13.  
  14. </mx:Application>

上面的代码取得@和&这两个字符的Unicode字符码。

@=64
&=32

上面的例子并没有多大的意义,基本上你需要定义一个字符串(这里我仅仅是定义了一个字符类型的临时变量)然后调用charCodeAt()函数获取该字符的数字编码。charCodeAt()函数可以指定一个参数,下面是一点说明:

charCodeAt()函数的参数,是一个整数类型的数字,该数字为字符在字符串中的位置,第一个为0,最后一个为 my_str.length - 1.

如果你不指定任何参数,那么默认将取得第一个字符的字符码。

现在你应该都了解了吧,让我们来看另一个例子:

Download: main.mxml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  3.         layout="vertical"
  4.         backgroundColor="white">     
  5.  
  6.     <mx:Script>
  7.         <![CDATA[
  8.             import mx.controls.dataGridClasses.DataGridColumn;
  9.             import mx.collections.ArrayCollection;     
  10.  
  11.             [Bindable]
  12.             private var arrColl:ArrayCollection;     
  13.  
  14.             private function doChange():void {
  15.                 var letterArray:Array = textInput.text.split("");
  16.                 arrColl = new ArrayCollection(letterArray);
  17.                 dg.validateNow();
  18.                 dg.selectedIndex = arrColl.length;
  19.                 dg.scrollToIndex(arrColl.length);
  20.             }     
  21.  
  22.             private function CharCode(item:Object, column:DataGridColumn):String {
  23.                 return item.charCodeAt().toString();
  24.             }
  25.         ]]>
  26.     </mx:Script>     
  27.  
  28.     <mx:TextInput id="textInput" change="doChange();" width="100%" />
  29.     <mx:DataGrid id="dg" dataProvider="{arrColl}" width="100%" height="100%">
  30.         <mx:columns>
  31.             <mx:DataGridColumn headerText="Character" dataField="letter" />
  32.             <mx:DataGridColumn headerText="Char Code" labelFunction="CharCode" />
  33.         </mx:columns>
  34.     </mx:DataGrid>
  35.     <mx:Label id="lbl" />     
  36.  
  37. </mx:Application>
下面是执行实际效果:

这个例子相对就比较实用了,你可以在TextInput中输入字符,相应的Unicode码将会显示在DataGrid中。

原文作者:Peter deHaan 翻译:minidxer

Topics: Flex | No Comments » | Tags: , , , , , , , , ,

Search Posts