- 论坛徽章:
- 0
|
如何用SHELL编人民币转换程序,请大家帮写一下。
原帖由 "admirer" 发表:
【本版精华集锦】中有!
http://www.chinaunix.net/forum/viewtopic.php?t=149718
不就是本帖嘛?!
唉~~,还是我给帖出来吧~~- #!/bin/bash
- #penny_ccf@hotmail.com
-
- #it's ugly, but it works
- cconvert(){
-
- declare -a cnum;
- declare -a cmag;
-
- cnum[1]="壹"
- cnum[2]="贰"
- cnum[3]="叁"
- cnum[4]="肆"
- cnum[5]="伍"
- cnum[6]="陆"
- cnum[7]="柒"
- cnum[8]="拔"
- cnum[9]="玖"
- cnum[0]="零"
-
- cmag[0]=""
- cmag[1]="拾"
- cmag[2]="佰"
- cmag[3]="仟"
- cmag[4]="万"
- cmag[5]="拾"
- cmag[6]="百"
- cmag[7]="千"
-
- tempalpha="$1";
- ctempmag=$2;
- if [ $tempalpha == "00000000" ] ; then
- CSTR="";
- return 0;
- fi
- let templength="${#tempalpha}";
-
- CSTR="";
- for ((m=0;m<templength;m++))
- do
- tempi=${tempalpha:m:1};
- let tempj="$templength-$m-1";
-
- if ((( tempi == 0 )) && (( tempj ==4 ))); then
- CSTR=$CSTR"万";
- elif (( tempi == 0 )); then
- CSTR=$CSTR${cnum[0]};
- else
- CSTR=$CSTR${cnum[$tempi]}${cmag[$tempj]};
- fi
-
- done
-
- CSTR=$(echo $CSTR | sed -e 's/零零*/零/g' -e 's/零$//g' -e 's/零零零万//g');
- CMAG="";
- for ((m=0;m<ctempmag;m++))
- do
- CMAG=$CMAG"亿";
- done
-
- CSTR=$CSTR$CMAG;
- }
-
- alpha=$1;
- length=${#alpha};
- let k="$length/8";
- let modl="$length%8";
- MYSTR="";
-
- tempstr=${alpha:0:$modl};
- if ((modl>0)); then cconvert $tempstr $k; fi
-
- MYSTR=$MYSTR$CSTR;
- for ((i=0;i<k;i++))
- do
- let pos="$i*8+modl";
- tempstr=${alpha:$pos:8};
- let tempmag="$k-$i-1";
- cconvert $tempstr $tempmag;
- MYSTR=$MYSTR$CSTR;
- done
- echo $MYSTR | sed -e 's/亿零万/亿零/g' -e 's/零万/万/g' -e 's/零亿/亿/g' -e 's/零零*/零/g' -e 's/零$//g';
-
复制代码
[来自]: www.linuxsir.com |
|