public function convertCurrency(currencyDigits:String):String
{
// Constants:
var MAXIMUM_NUMBER:Number=99999999999.99;
// Predefine the radix characters and currency symbols for output:
var CN_ZERO:String="零";
var CN_ONE:String="壹";
var CN_TWO:String="贰";
var CN_THREE:String="叁";
var CN_FOUR:String="肆";
var CN_FIVE:String="伍";
var CN_SIX:String="陆";
var CN_SEVEN:String="柒";
var CN_EIGHT:String="捌";
var CN_NINE:String="玖";
var CN_TEN:String="拾";
var CN_HUNDRED:String="佰";
var CN_THOUSAND:String="仟";
var CN_TEN_THOUSAND:String="万";
var CN_HUNDRED_MILLION:String="亿";
//var CN_SYMBOL = "¥:";
var CN_SYMBOL:String="";
var CN_DOLLAR:String="元";
var CN_TEN_CENT:String="角";
var CN_CENT:String="分";
var CN_INTEGER:String="整";
// Variables:
var integral:String; // Represent integral part of digit number.
var decimal:String; // Represent decimal part of digit number.
var outputCharacters:String=""; // The output result.
var parts:Array;
var digits:Array;
var radices:Array;
var bigRadices:Array;
var decimals:Array;
var zeroCount:int;
var i:int;
var p:int;
var d:String;
var quotient:Number;
var modulus:Number;
// Validate input string:
currencyDigits=currencyDigits.toString();
if (currencyDigits == "")
{
Alert.show("请输入要转换的数字!");
return "";
}
if (currencyDigits.match(/[^,./d]/) != null)
{
Alert.show("数字中含有非法字符!");
return "";
}
if ((currencyDigits).match(/^((/d{1,3}(,/d{3})*(.((/d{3},)*/d{1,3}))?)|(/d+(./d+)?))$/) == null)
{
Alert.show("错误的数字格式!");
return "";
}
// Normalize the format of input digits:
currencyDigits=currencyDigits.replace(/,/g, ""); // Remove comma delimiters.
currencyDigits=currencyDigits.replace(/^0+/, ""); // Trim zeros at the beginning.
// Assert the number is not greater than the maximum number.
if (Number(currencyDigits) > MAXIMUM_NUMBER)
{
Alert.show("超出转换最大范围!");
return "";
}
// Process the coversion from currency digits to characters:
// Separate integral and decimal parts before processing coversion:
parts=currencyDigits.split(".");
if (parts.length > 1)
{
integral=parts[0];
decimal=parts[1];
// Cut down redundant decimal digits that are after the second.
decimal=decimal.toString().substr(0, 2);
}
else
{
integral=parts[0];
decimal="";
}
// Prepare the characters corresponding to the digits:
digits=new Array(CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE);
radices=new Array("", CN_TEN, CN_HUNDRED, CN_THOUSAND);
bigRadices=new Array("", CN_TEN_THOUSAND, CN_HUNDRED_MILLION);
decimals=new Array(CN_TEN_CENT, CN_CENT);
// Start processing:
outputCharacters="";
// Process integral part if it is larger than 0:
if (Number(integral) > 0)
{
zeroCount=0;
for (var i:int=0; i < integral.length; i++)
{
p=integral.length - i - 1;
d=integral.substr(i, 1);
quotient=p / 4;
modulus=p % 4;
if (d == "0")
{
zeroCount++;
}
else
{
if (zeroCount > 0)
{
outputCharacters+=digits[0];
}
zeroCount=0;
outputCharacters+=digits[Number(d)] + radices[modulus];
}
if (modulus == 0 && zeroCount < 4)
{
outputCharacters+=bigRadices[quotient];
}
}
outputCharacters+=CN_DOLLAR;
}
// Process decimal part if there is:
if (decimal != "")
{
for (var i:int=0; i < decimal.length; i++)
{
d=decimal.substr(i, 1);
if (d != "0")
{
outputCharacters+=digits[Number(d)] + decimals;
}
}
}
// Confirm and return the final output string:
if (outputCharacters == "")
{
outputCharacters=CN_ZERO + CN_DOLLAR;
}
if (decimal == "")
{
outputCharacters+=CN_INTEGER;
}
outputCharacters=CN_SYMBOL + outputCharacters;
trace("小写转换为大写2:" + outputCharacters);
return outputCharacters;
}