Flex:日文半角转全角,英数全角转半角

日本人总是有各式各样的要求,光切换转入法不行,还必须能自动进行全半角转换。真没办法。
下面做了一个输入框,当焦点离开时,就会自动进行转换。


<?xml version="1.0" encoding="utf-8"?>
<mx:TextInput xmlns:mx="http://www.adobe.com/2006/mxml" focusOut="transformFont()">
    <mx:Script>
        <![CDATA[
        
            [Bindable]
            public var isTransformFull:Boolean = false;
            [Bindable]
            public var isTransformHalf:Boolean = false;
            
            private var FullKana1:String = "ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン";
            private var HalfKana1:String = "ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン";
            
            private var FullKana2:String = "ヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ";
            private var HalfKana2:String = "ヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ";
            
            private var FullAlphabet:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
            private var HalfAlphabet:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
            
            private var FullNumber:String = "0123456789";
            private var HalfNumber:String = "0123456789";
            
            private var FullSymbol:String = "()-./@/¥";
            private var HalfSymbol:String = "()-./@//";
            
            private function transformFont():void {
                if(isTransformFull)encodeString();
                else if(isTransformHalf)decodeString();
                else return;
            }
            
            private function encodeString():void {
                var strResult:String = "";
                strResult = this.text;
                strResult = encodeString1(strResult);
                strResult = encodeString2(strResult);
                strResult = encodeString3(strResult);
                strResult = encodeString4(strResult);
                strResult = encodeString5(strResult);
                this.text = strResult;
            }
            
            private function decodeString():void {
                var strResult:String;
                strResult = this.text;
                strResult = decodeString1(strResult);
                strResult = decodeString2(strResult);
                strResult = decodeString3(strResult);
                strResult = decodeString4(strResult);
                strResult = decodeString5(strResult);
                this.text = strResult;
            }
            private function translateString(OriginalString:String, strSource:String, strDestination:String):String {
                var strResult:String;
                strResult = OriginalString;
                for (var i:int = 0; i < strSource.length; i++) {
                    while (strResult != null && strResult.indexOf(strSource.substring(i,i+1)) != -1){
                          strResult = strResult.replace(strSource.substring(i,i+1),strDestination.substring(i,i+1));
                      }
                }
                return strResult;
            }
            private function encodeString1(OriginalString:String):String {
                var strResult:String;
                strResult = OriginalString;
                strResult = translateString(strResult, HalfKana1, FullKana1);
                return strResult;
            }
            private function encodeString2(OriginalString:String):String {
                var strResult:String;
                strResult = OriginalString;
                strResult = translateString(strResult, HalfKana2, FullKana2);
                return strResult;
            }
            private function encodeString3(OriginalString:String):String {
                var strResult:String;
                strResult = OriginalString;
                strResult = translateString(strResult, HalfAlphabet, FullAlphabet);
                return strResult;
            }
            private function encodeString4(OriginalString:String):String {
                var strResult:String;
                strResult = OriginalString;
                strResult = translateString(strResult, HalfNumber, FullNumber);
                return strResult;
            }
            private function encodeString5(OriginalString:String):String {
                var strResult:String;
                strResult = OriginalString;
                strResult = translateString(strResult, HalfSymbol, FullSymbol);
                return strResult;
            }
            private function decodeString1(OriginalString:String):String {
                var strResult:String;
                strResult = OriginalString;
                strResult = translateString(strResult, FullKana1, HalfKana1);
                return strResult;
            }
            private function decodeString2(OriginalString:String):String {
                var strResult:String;
                strResult = OriginalString;
                strResult = translateString(strResult, FullKana2, HalfKana2);
                return strResult;
            }
            private function decodeString3(OriginalString:String):String {
                var strResult:String;
                strResult = OriginalString;
                strResult = translateString(strResult, FullAlphabet, HalfAlphabet);
                return strResult;
            }
            private function decodeString4(OriginalString:String):String {
                var strResult:String;
                strResult = OriginalString;
                strResult = translateString(strResult, FullNumber, HalfNumber);
                return strResult;
            }
            private function decodeString5(OriginalString:String):String {
                var strResult:String;
                strResult = OriginalString;
                strResult = translateString(strResult, FullSymbol, HalfSymbol);
                return strResult;
            }
        ]]>
    </mx:Script>
</mx:TextInput>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值