1026
支付宝
fastreport脚本函数实 现金额大小写转换
fastreport模板中允许PascalScript,c++ Script ,BasicScript,JScript 脚本。
我使用 PascalScript实现把客户金额由阿拉伯数字(小写)转换为数字大写( 壹(壹)、贰(贰)、叁、肆(肆)、伍(伍)、陆(陆)、柒、捌、玖、拾、佰、仟、万(万)、亿、元、角、分、零、整(正) )。
网上搜啦Delphi中实现大小写的网友自写函数 NumToChar 。 NumToChar 使用Delphi内置函数 StringReplace , StringReplace 在脚本中不能引用,便仿照内置 StringReplace 添瓦加砖,最后实现啦功能。
代码如下:
function StringReplace(const S, OldPattern, NewPattern: string): string;
var
SearchStr, Patt, NewStr: string;
Offset: Integer;
begin
SearchStr := S;
Patt := OldPattern;
NewStr := S;
Result := '';
while SearchStr <> '' do
begin
Offset := Pos(Patt, SearchStr);
if Offset = 0 then
begin
Result := Result + NewStr;
Break;
end;
Result := Result + Copy(NewStr, 1, Offset - 1) + NewPattern;
NewStr := Copy(NewStr, Offset + Length(OldPattern), 2147483647);
SearchStr := Copy(SearchStr, Offset + Length(Patt), 2147483647);
end;
end;
function NumToChar(const n: string): string; //可以到万亿,并且可以随便扩大范围
var i : Integer;tmp:real;
cNum: String = '零壹贰叁肆伍陆柒捌玖--万仟佰拾亿仟佰拾万仟佰拾元角分';
cCha1:array[0..12]of string =
[ '零元','零拾','零佰','零仟','零万','零亿','亿万','零零零','零零','零万','零亿','亿万','零元'];
cCha2:array[0..12]of string = [ '元','零','零','零','万','亿','亿','零','零','万','亿','亿','元'];
sNum,sTemp : String;
begin
result :='';
tmp := strtofloat(n);
sNum := format('%15d',[round(tmp * 100)]);
for i := 0 to 14 do
begin
stemp := copy(snum,i+1,1);
if stemp=' ' then continue
else result := result + cNum[strtoint(stemp)+1] + cNum[i+13];
end;
for i:= 0 to 12 do
Result := StringReplace(Result, cCha1[i], cCha2[i]);
if pos('零分',result)=0 then
Result := StringReplace(Result, '零角', '零')
else Result := StringReplace(Result, '零角','整');
Result := StringReplace(Result, '零分','');
end;
最后更新:2017-04-26 21:31:01