C# 金钱 小写转大写的算法

调用 ConvertMoney的ConvertMoneyToWords(decimal money)方法即可

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;
namespace Common
{
    public class ConvertMoney
    {
        static string[] c_Num = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
        static string[] c_FH = { "", "拾", "佰", "仟" };
        static string[] c_Wn = { "圆", "万", "亿" };
        public static string ConvertMoneyToWords(decimal money)
        {
            string result = string.Empty;
            if (!string.IsNullOrEmpty(money.ToString()))
            {
                string[] moneysplit = money.ToString().Split(new string[] { "." }, StringSplitOptions.RemoveEmptyEntries);
                Regex reg = new Regex("零{2,}");
                string m = moneysplit[0];
                int mlen = m.Length;
                string word = string.Empty;
                for (int i = mlen; i > 0; i--)
                {
                    word = ConverNumToWord(word, m[mlen - i], i, true);
                }
                if (moneysplit.Length > 1)
                {
                    string d = moneysplit[1];
                    int dlen = d.Length > 2 ? 2 : d.Length;
                    if (dlen == 2 && d[0] == ‘0‘ && d[1] == ‘0‘)
                    {
                        word += "整";
                    }
                    else
                    {
                        for (int i = 0; i < dlen; i++)
                        {
                            word = ConverNumToWord(word, d[i], i, false);
                        }
                    }
                }
                else
                {
                    word += "整";
                }
                result = reg.Replace(word.ToString(), "零");
            }
            return result;
        }
        private static string ConverNumToWord(string appendStr, char a, int index, bool isYuan)
        {
            string s = c_Num[Convert.ToInt32(a) - 48];
            if (isYuan)
            {
                int z = (index - 1) / 4;
                int y = (index - 1) % 4;
                appendStr = appendStr + s + (s != "零" ? c_FH[y] : "");
                if (y == 0)
                {
                    appendStr = appendStr.Trim(‘零‘) + c_Wn[z];
                }
            }
            else
            {
                if (index == 0 && s != "零")
                {
                    appendStr = appendStr + s + "角";
                }
                else if (index == 0)
                {
                    appendStr = appendStr + s;
                }
                if (index == 1 && s != "零")
                {
                    appendStr = appendStr + s + "分";
                }
            }
            return appendStr;
        }
    }
}
时间: 2024-08-15 07:31:26

C# 金钱 小写转大写的算法的相关文章

Python3基础 字符串 swapcase 英文字母小写变大写 并且 大写变小写

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: myStr='hello WORLD' #大写变小写 并 小写变大写 myNewStr=myStr.swapcase() print(myStr) print(myNewStr) result: ============= RESTART: C:/Users/Administr

JS函数实现金额小写转大写

止乎于分享! 1 ///<summery>小写金额转化大写金额</summery> 2 function AmountLtoU(amount) { 3 if (isNaN(amount) || amount >= 1000000000000) return "无效金额!"; //数值最大不超过1万亿 4 var sPrefix = amount < 0 ? "(负)" : ""; //将负号‘-’显示成汉字‘(

自定义EL函数:小写转大写

1,定义java静态方法,FunctionDemo,有小写转大写的功能 package com.itheima.domain; public class FunctionDemo { public static String toUpperCase(String string){ return string.toUpperCase(); } } 2,编辑xml文件,扩展名为tld 需要指定类的详细名称,带包名,方法的详细信息,返回值+方法名+参数,和访问路径uri,在页面中导入这个uri才能使用

js实现小写转大写,js实现数字转人民币

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>小写转大写</title> <style type="text/css"> div { position:absolute;left:lin;top:lin;bottom:lin;right:lin; background-col

java网络编程(6)——实现一个服务器把小写转大写

实现一个服务器,通过我们发送的文本数据,然后转回大写放回,实现一个服务端与客户端的交互,用over来作为结束标记,具体代码如下: 客户端: package com.seven.tcp; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket; pu

传入一个字符串,已知字符串只由字母组成,将其中的大写字母转换为小写,小写转换为大写,返回转换后的字符串

传入一个字符串,已知字符串只由字母组成,将其中的大写字母转换为小写,小写转换为大写,返回转换后的字符串 如传入:@"GOODgoodSTUDY",返回@"goodGOODstudy" */ - (NSString *)upperExchangeLower:(NSString *)str { NSMutableString *str1=[[NSMutableString alloc] initWithString:str]; for (NSUInteger i=0;

[转] 金额小写变大写

1 /// <summary> 2 /// 金额小写变大写 3 /// </summary> 4 /// <param name="smallnum"></param> 5 /// <returns></returns> 6 public static string gMoney(decimal smallnum) 7 { 8 string cmoney , cnumber, cnum, cnum_end,cmon

C#金额小写转大写

public string ConvertMoney(decimal Money) { //金额转换程序 string MoneyNum = "";//记录小写金额字符串[输入参数] string MoneyStr = "";//记录大写金额字符串[输出参数] string BNumStr = "零壹贰叁肆伍陆柒捌玖";//模 string UnitStr = "万仟佰拾亿仟佰拾万仟佰拾圆角分";//模 MoneyNum =

SQL金额小写转大写

CREATE FUNCTION dbo.L2U(@n_LowerMoney numeric(15,2),@v_TransType int) RETURNS VARCHAR(200) AS BEGIN Declare @v_LowerStr VARCHAR(200) -- 小写金额 Declare @v_UpperPart VARCHAR(200) Declare @v_UpperStr VARCHAR(200) -- 大写金额 Declare @i_I int set @v_LowerStr =