vb.net编写人民币小写转大写

填写票据和结算凭证.必须做到标准化.规范化.要要素齐全.数字正确.字迹清晰.不错漏.不潦草.防止涂改.中文大写金额数字应用正楷或行书填写.如壹(壹).贰(贰).叁.肆(肆).伍(伍).陆(陆).柒.捌.玖.拾.佰.仟.万(万).亿.元.角.分.零.整(正)等字样.不得用一.二(两).三.四.五.六.七.八.九.十.念.毛.另(或0)填写.不得自造简化字.如果金额数字书写中使用繁体字.如贰.陆.亿.万.圆的.也应受理.

一.中文大写金额数字到"元"为止的.在"元"之后.应写"整"(或"正")字.在"角"之后.可以不写"整"(或"正")字.大写金额数字有"分"的."分"后面不写"整"(或"正")字.

二.中文大写金额数字前应标明"人民币"字样.大写金额数字有"分"的."分"后面不写"整"(或"正")字.

三.中文大写金额数字前应标明"人民币"字样.大写金额数字应紧接"人民币"字样填写.不得留有空白.大写金额数字前未印"人民币"字样的.应加填"人民币"三字.在票据和结算凭证大写金额栏内不得预印固定的"仟.佰.拾.万.仟.佰.拾.元.角.分"字样.

四.阿拉伯数字小写金额数字中有"0"时.中文大写应按照汉语语言规律.金额数字构成和防止涂改的要求进行书写.举例如下:

1·阿拉伯数字中间有"0"时.中文大写要写"零"字.如¥1409.50.应写成人民币陆壹仟肆佰零玖元伍角.

2·阿拉伯数字中间连续有几个"0"时.中文大写金额中间可以只写一个"零"字.如¥6007.14.应写成人民币陆仟零柒元壹角肆分.

3·阿拉伯金额数字万位和元位是"0".或者数字中间连续有几个"0".万位.元位也是"0".但千位.角位不是"0"时.中文大写金额中可以只写一个零字.也可以不写"零"字.如¥1680.32.应写成人民币壹仟陆佰捌拾元零叁角贰分.或者写成人民币壹仟陆佰捌拾元叁角贰分.又如¥107000.53.应写成人民币壹拾万柒仟元零伍角叁分.或者写成人民币壹拾万零柒仟元伍角叁分.

4·阿拉伯金额数字角位是"0".而分位不是"0"时.中文大写金额"元"后面应写"零"字.如¥16409.02.应写成人民币壹万陆仟肆佰零玖元零贰分,又如¥325.04.应写成人民币叁佰贰拾伍元零肆分.

五.阿拉伯小写金额数字前面.均应填写人民币符号"¥".阿拉伯小写金额数字要认真填写.不得连写分辨不清.

六.票据的出票日期必须使用中文大写.为防止变造票据的出票日期.在填写月.日时.月为壹.贰和壹拾的.日为壹至玖和壹拾.贰拾和叁拾的.应在其前加"零",日为拾壹至拾玖的.应在其前加"壹".如1月15日.应写成零壹月壹拾伍日.再如10月20日.应写成零壹拾月零贰拾日.

七.票据出票日期使用小写填写的.银行不予受理.大写日期未按要求规范填写的.银行可予受理.但由此造成损失的.由出票人自行承担.

代码如下:

 

    Private Function transnumber(ByVal number) As String
        '小写转大写
        '编写者:deepfuture@vip.qq.com
        '时间:2012-04-11
        'blog:deepfuture.iteye.com
        Dim numstr As String
        Dim radixpointlocation As Integer
        '小写转大写的映射数组
        Dim numberarray(9) As String
        '数位数组
        Dim digitplace(13) As String
        '币值
        Dim valuta(2) As String
        '小数点前
        Dim strbeforeradix As String
        '小数点后
        Dim strafterradix As String
        '整
        Dim zheng As String
        '需要用到的模式匹配
        Dim strpattern As String

        '临时用变量
        Dim tempstr1 As String
        Dim tempstr2 As String
        Dim i As Integer
        '结果字符串
        Dim transresult As String
        '转换用相关数组
        numberarray(0) = "零"
        numberarray(1) = "壹"
        numberarray(2) = "贰"
        numberarray(3) = "叁"
        numberarray(4) = "肆"
        numberarray(5) = "伍"
        numberarray(6) = "陆"
        numberarray(7) = "柒"
        numberarray(8) = "捌"
        numberarray(9) = "玖"
        digitplace(0) = "元"
        digitplace(1) = "拾"
        digitplace(2) = "佰"
        digitplace(3) = "仟"
        digitplace(4) = "万"
        digitplace(5) = "拾"
        digitplace(6) = "佰"
        digitplace(7) = "仟"
        digitplace(8) = "亿"
        digitplace(9) = "拾"
        digitplace(10) = "佰"
        digitplace(12) = "仟"
        digitplace(13) = "万"
        valuta(0) = "元"
        valuta(1) = "角"
        valuta(2) = "分"
        zheng = "整"
        strbeforeradix = "人民币 "
        strafterradix = ""
        '从控件中取得数字值,同时删除千位符","
        numstr = number.Replace(",", "")
        '找到小数点位置
        radixpointlocation = (numstr.IndexOf("."))
        '开始转换
        '先转换小数点后的小数
        If radixpointlocation = -1 Then
            '数为整数
            strafterradix = valuta(0) + zheng
        Else
            '不是整数,先读取小数部分
            tempstr1 = Trim(numstr.Substring(radixpointlocation + 1))
            i = 1
            For Each tempstr2 In tempstr1
                strafterradix += numberarray(tempstr2) + valuta(i)
                i = i + 1
            Next
            '处理小数的各种特殊情况
            strafterradix = strafterradix.Replace("零分", "整")
            strafterradix = strafterradix.Replace("零角", "零")
            strafterradix = strafterradix.Replace("零零", "")
            strafterradix = strafterradix.Replace("零整", "整")
            If strafterradix.Length = 0 Or strafterradix.Length = 2 Then
                strafterradix &= "整"
            End If

        End If
        tempstr1 = Trim(numstr).Substring(0, IIf(radixpointlocation = -1, numstr.Length, radixpointlocation))
        If tempstr1.Length > 13 Then
            Return "数字太大,本程序无法转换" & numstr
        End If
        i = tempstr1.Length - 1
        For Each tempstr2 In tempstr1
            strbeforeradix &= numberarray(tempstr2) + digitplace(i)
            i -= 1
        Next
          strbeforeradix = strbeforeradix.Replace("零拾", "零")
        strbeforeradix = strbeforeradix.Replace("零佰", "零")
        strbeforeradix = strbeforeradix.Replace("零仟", "零")
        transresult = strbeforeradix + strafterradix
        '处理多个0的情况
        Dim findzero As Boolean = False
        Dim mystr As String = ""
        tempstr2 = ""
        For Each tempstr1 In transresult
            If tempstr1 = "零" Then
                findzero = True
                mystr = ""
            Else
                If findzero Then
                    mystr = "零" & tempstr1
                    findzero = False
                Else
                    mystr = tempstr1
                End If
            End If

            tempstr2 += mystr
        Next
        tempstr2 = tempstr2.Replace("零万", "万")
        tempstr2 = tempstr2.Replace("零亿", "亿")
        tempstr2 = tempstr2.Replace("零元", "元")
        transresult = tempstr2
        Return transresult
    End Function

 演示如下:



 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值