2009-01-09

Flex金额转大写函数

  从一个VFP函数转过来的,调用:transformAmount(231010045.31) 。 代码如下:

private function transformAmount(amount:Number):String
{
var result:String = "";
var number:Number = 0;
var i:int = 0;
if (isNaN(amount) == true)
return result;
result = (amount < 0, "负", "");
number = Math.round(amount * 100);
for (i = number.toString().length - 1; i >= 0; i--)
{
result = result +
"零壹贰叁肆伍陆柒捌玖".substr(Math.floor(number / Math.pow(10, i)), 1) +
"分角元拾佰仟万拾佰仟亿拾佰仟万".substr(i, 1);
number = number % (Math.pow(10, i));
}
result = STRTRAN(STRTRAN(STRTRAN(STRTRAN(STRTRAN(result, "零仟", "零"), "零佰", "零"),
"零拾", "零"), "零角", "零"), "零分", "整");
result = STRTRAN(STRTRAN(STRTRAN(STRTRAN(STRTRAN(result, "零零", "零"), "零零", "零"),
"零亿", "亿"), "零万", "万"), "零元", "元");
result = (result == "整" ? "零元整" : STRTRAN(STRTRAN(result, "亿万", "亿"), "零整", "整"));
return result;
}

private function STRTRAN(strSearched:String, strExpressionSought:String,
strReplacement:String):String
{
var result:String = null;
var i:int = 0;
if (strSearched == null)
return result;
result = "";
for (i = 0; i < strSearched.length; i++)
if (strSearched.substr(i, strExpressionSought.length) == strExpressionSought)
{
result = result + strReplacement;
i = i + strExpressionSought.length - 1;
}
else
{
result = result + strSearched.substr(i, 1);
}
return result;
}

没有评论: