package Number.utils { public class NumberUtil { //Usage: trace(NumberUtil.converToWords(numbers.text)); private static const THOUSANDS:Array = ['','千','百万','十亿','万亿']; private static const DECADES:Array = ['二十','三十','四十','五十','六十','七十','八十','九十']; private static const TENS:Array = ['十','十一','十二','十三','十四','十五','十六','十七','十八','十九']; private static const DIGITS:Array = ['零','一','二','三','四','五','六','七','八','九']; private static const HUNDRED:String = '百'; private static const POINT:String ='点'; private static const BIG:String ='...' public static function converToWords(s:String):String{ s = s.replace(/[/, ]/g,''); var x:int = s.indexOf('.'); if (x == -1) x = s.length; if (x > 15) return BIG; var number:Array = s.split(''); var Words:String = ''; var cnt:int = 0; for (var i:int=0; i < x; i++) { if ((x-i)%3==2) { if (number[i] == '1') { Words += TENS[Number(number[i+1])] + ' '; i++; cnt=1; } else if (number[i]!=0){ Words += DECADES[number[i]-2] + ' '; cnt=1; } }else if (number[i]!=0) { Words += DIGITS[number[i]] +' '; if ((x-i)%3==0) Words += HUNDRED; cnt=1; } if ((x-i)%3==1) { if (cnt) Words += THOUSANDS[(x-i-1)/3] + ' '; cnt=0; } } if (x != s.length) { var y:int = s.length; Words += POINT; for (var j:int=x+1; j<y; j++) Words += DIGITS[number[j]] +' '; } return Words.replace(//s+/g,' '); } public static function fixIntToString(num:int,length:int,prefix:String):String{ var result : String = num.toString(); while(result.length<length){ result = prefix + result; } return result.substring(0,length); } } }