当前位置:首页 > 服务器类 > Unix > > SCO下转换大写金额的SHELL脚本

SCO下转换大写金额的SHELL脚本

点击次数:21 次 发布日期:2008-11-29 16:24:21 作者:源代码网
源代码网推荐
#!/bin/ksh
#ProgramName:Num2Chn.sh
#Programmer:吕永辉(仙桃市信用联社)
#首先判断输入的是否为数字
printf"%.2f"$1>/dev/null2>&13>&1||{
echo"输入非法!!!";exit
}
#定义数字数组
Num[0]="零"Num[1]="壹"Num[2]="贰"Num[3]="叁"Num[4]="肆"Num[5]="伍"
Num[6]="陆"Num[7]="柒"Num[8]="捌"Num[9]="玖"
#定义金额单位数组
Unit[1]="分"Unit[2]="角"Unit[3]="元"Unit[4]="拾"Unit[5]="佰"Unit[6]="仟"
Unit[7]="万"Unit[11]="亿"
#处理负数的情况(红字)
[`echo$1|grep"-"`]&&{
NumStr=`echo$1|sed"s/^.//"`
RedFlag="(红)"
}||{
NumStr=$1
RedFlag=""
}
#初始化输入数字数组
i=1
forTmpCin`printf"%.2f"$NumStr|awk-F".""{print$1$2}"|sed"s/./&/g"`
do
Nums[$i]=$TmpC
i=`expr$i+1`
done
j=${#Nums[@]}#为循环计数变量附初值为输入数字的长度
k=1#为循环定位变量附初值(用于确定金额单位)
ChnNum=""#初始化大写金额字符串
while
[$j-eq0]&&break
[$k-gt11]&&{
ChnNum=${Num[${Nums[$j]}]}${Unit[`expr$k-8`]}$ChnNum
j=`expr$j-1`
k=`expr$k+1`
continue
}
[$k-gt7-a$k-lt11]&&{
ChnNum=${Num[${Nums[$j]}]}${Unit[`expr$k-4`]}$ChnNum
j=`expr$j-1`
k=`expr$k+1`
continue
}
ChnNum=${Num[${Nums[$j]}]}${Unit[$k]}$ChnNum
do
j=`expr$j-1`
k=`expr$k+1`
done
ChnNum=`echo$RedFlag$ChnNum|sed"s/零分/整/"|sed"s/零角/零/g"
|sed"s/零拾/零/g"|sed"s/零佰/零/g"|sed"s/零仟/零/g"
|sed"s/零整/整/"|sed"s/零零零零万/零/"`
#下面的循环用于去掉字符串中连续的零
while
[`echo$ChnNum|grep"零零"`]||{
ChnNum=`echo$ChnNum|sed"s/零元/元/"|sed"s/零万/万/"
|sed"s/零亿/亿/"|sed"s/^元//"|sed"s/^零//"|sed"s/^整$/零元&/`
break
}
do
ChnNum=`echo$ChnNum|sed"s/零零/零/g"`
done
echo$ChnNum
(调试环境:SCOOpenServer5.0.5、ksh)


源代码网供稿.
网友评论 (0)
会员中心
服务器类
本站推荐
服务器类之精华