C#将货币金额数字转大写汉字

目录

一、对输入数字的处理

二、源码

1、Main()

2.类库


一、对输入数字的处理

        用正则表达式对输入的数字判断是否符合货币格式,小数点前的数字串的长度是否不大于13。

二、源码

1、Main()

// 货币金额小写数字转大写汉字
// 小数点前数字长度<=13,即不超过十亿
using System.Text.RegularExpressions;namespace NumtoUpperChinese
{partial class Program{/// <summary>/// 判断输入的是否货币格式,是否小数点前<=13,/// </summary>/// <param name="args"></param>private static void Main(string[] args){ArgumentNullException.ThrowIfNull(args);Console.WriteLine("请输入要判断的字符串(货币格式)");string input = Console.ReadLine()!.ToString();if (input!="") {bool isValidFormat = IsValidCurrencyFormat(input);if (isValidFormat){Console.WriteLine(NumtoUpper.MoneyToUpper(input));}else{Console.WriteLine("输入的货币格式无效");}}else{Console.WriteLine("输入数字不能空,请重新输入!", "提示");}}static bool IsValidCurrencyFormat(string input){Regex regex = MyRegex();      // 定义正则表达式模式return regex.IsMatch(input);    // 返回匹配结果}[GeneratedRegex(@"^\d{0,13}(\.\d+)?$")]private static partial Regex MyRegex();}
}
//运行结果:
/*
请输入要判断的字符串(货币格式)
9999999999999.99
玖万玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖圆玖角玖分*/

2.类库

// 类库
namespace NumtoUpperChinese
{internal static class NumtoUpper{/// <summary>/// 金额转换成中文大写金额/// </summary>/// <param name="LowerMoney">eg:10.74</param>/// <returns></returns>public static string MoneyToUpper(string LowerMoney){           string? ReturnValue;bool IsNegative = false; // 是否是负数if (LowerMoney.Trim()[..1] == "-"){// 是负数则先转为正数LowerMoney = LowerMoney.Trim().Remove(0, 1);IsNegative = true;}string? strLower;string? strUpart = null;string? strUpper;int iTemp;// 保留两位小数 123.489→123.49  123.4→123.4LowerMoney = Math.Round(double.Parse(LowerMoney), 2).ToString();if (LowerMoney.IndexOf('.') > 0){if (LowerMoney.IndexOf('.') == LowerMoney.Length - 2){LowerMoney += ('0');}}else{LowerMoney += ".00";}strLower = LowerMoney;iTemp = 1;strUpper = "";while (iTemp <= strLower.Length){switch (strLower.Substring(strLower.Length - iTemp, 1)){case ".":strUpart = "圆";break;case "0":strUpart = "零";break;case "1":strUpart = "壹";break;case "2":strUpart = "贰";break;case "3":strUpart = "叁";break;case "4":strUpart = "肆";break;case "5":strUpart = "伍";break;case "6":strUpart = "陆";break;case "7":strUpart = "柒";break;case "8":strUpart = "捌";break;case "9":strUpart = "玖";break;}strUpart = iTemp switch{1 => strUpart + "分",2 => strUpart + "角",3 => strUpart + "",4 => strUpart + "",5 => strUpart + "拾",6 => strUpart + "佰",7 => strUpart + "仟",8 => strUpart + "万",9 => strUpart + "拾",10 => strUpart + "佰",11 => strUpart + "仟",12 => strUpart + "亿",13 => strUpart + "拾",14 => strUpart + "佰",15 => strUpart + "仟",16 => strUpart + "万",_ => strUpart + "",};strUpper = strUpart + strUpper;iTemp++;}strUpper = strUpper.Replace("零拾", "零");strUpper = strUpper.Replace("零佰", "零");strUpper = strUpper.Replace("零仟", "零");strUpper = strUpper.Replace("零零零", "零");strUpper = strUpper.Replace("零零", "零");strUpper = strUpper.Replace("零角零分", "整");strUpper = strUpper.Replace("零分", "整");strUpper = strUpper.Replace("零角", "零");strUpper = strUpper.Replace("零亿零万零圆", "亿圆");strUpper = strUpper.Replace("亿零万零圆", "亿圆");strUpper = strUpper.Replace("零亿零万", "亿");strUpper = strUpper.Replace("零万零圆", "万圆");strUpper = strUpper.Replace("零亿", "亿");strUpper = strUpper.Replace("零万", "万");strUpper = strUpper.Replace("零圆", "圆");strUpper = strUpper.Replace("零零", "零");// 对壹圆以下的金额的处理if (strUpper[..1] == "圆"){strUpper = strUpper[1..];}if (strUpper[..1] == "零"){strUpper = strUpper[1..];}if (strUpper[..1] == "角"){strUpper = strUpper[1..];}if (strUpper[..1] == "分"){strUpper = strUpper[1..];}if (strUpper[..1] == "整"){strUpper = "零圆整";}ReturnValue = strUpper;if (IsNegative == true){return "负" + ReturnValue;}else{return ReturnValue;}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/630097.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[通知]rust跟我学:文件时间属性获得方法文章已上线

大家好&#xff0c;我是带剑书生&#xff0c;开源库get_local_info的作者。目前我的付费专栏已经上线第七篇文章&#xff0c;用于介绍在实现get_local_info过程中&#xff0c;遇到该问题所使用的解决方法&#xff0c;喜欢的朋友可以去订阅了&#xff0c;19.9元&#xff0c;非常…

LTD营销枢纽(乐通达)成为杭州市中小企业数字化转型遴选服务商

为推进国家中小企业数字化转型城市试点建设&#xff0c;赋能中小企业信息化、智能化、新型工业化能力水平提升&#xff0c;杭州市经信局公开招募了具备高质量服务能力的中小企业数字化转型服务商。经过公开征集、专家评审等多个环节&#xff0c;LTD营销枢纽凭借其在数字化转型领…

计算机网络(第六版)复习提纲1

计算机网络历程 一、计算机网络体系结构 1974年 美国IBM公司&#xff1a; SNA&#xff08;系统网络体系结构&#xff09; 1977年 国际标准化组织&#xff1a; OSI/RM&#xff08;开放系统互连基本参考模型&#xff09;【抽象概念】 1983年 国际化标准组织&#xff1a; ISO 74…

东北编程语言???

在GitHub闲逛&#xff0c;偶然发现了东北编程语言&#xff1a; 东北编程语言是由Zhanyong Wan创造的&#xff0c;它使用东北方言词汇作为基本关键字。这种编程语言的特点是简单易懂&#xff0c;适合小学文化程度的人学习&#xff0c;并且易于阅读、编写和记忆。它的语法与其他编…

openai-whisper

openai-whisper 0. 参数说明1. 视频语音转文字 demo1. 提取b站视频中的音频,增加到自己的视频里,并且显示字幕1. 下载b站视频到电脑2. 提取视频中的音频3. 音频转文字4. 自己的视频去掉音频,增加新的音频和字幕 0. 参数说明 语音识别模型whisper的参数说明 1. 视频语音转文字…

Jetbrains ai assistant激活后仍无法使用,怎么回事?

用正式的ai assistant激活码激活后仍然无法使用 首先获取了ai assistant激活码&#xff0c;激活后如下 地址&#xff1a;https://web.52shizhan.cn 上图是已经激活成功了&#xff0c;但是在右侧这里打开ai assistant不可用 点击开始使用ai assistant 出错 以上是用了ai as…

java日志框架总结

一、日志框架简单分类介绍 java常用的日志框架、可以分为两组&#xff1a; 1、JCL、JUL、Log4j&#xff1b; 2、SLF4J、Log4j2、Logback&#xff1b; 其中第一组是比较早期的日志实现框架&#xff0c;JCL并不是具体的日志实现框架&#xff0c;JCL其实是定义了一…

运动模型非线性测量非线性扩展卡尔曼跟踪融合滤波算法(Matlab仿真)

卡尔曼滤波的原理和理论在CSDN已有很多文章&#xff0c;这里不再赘述&#xff0c;仅分享个人的理解和Matlab仿真代码。 之前的博文运动模型非线性扩展卡尔曼跟踪融合滤波算法&#xff08;Matlab仿真&#xff09;-CSDN博客使用扩展卡尔曼滤波算法将非线性的运动模型线性化&#…

我的年终总结2023

As a DBA 从2023年初开始&#xff0c;我就给自己定下了23年的主要任务——学习PostgreSQL数据库。虽然没有定下细致的计划&#xff0c;但总体的目标是把PG的一些基础知识学完。后来发现我想简单了&#xff0c;学习PG的成本比我想象的多的多&#xff0c;导致23年这个目标没有完…

abap smartforms 转换成pdf xtring

最近客户有一个需求是需要讲发票的smartform 发送到第三方系统。 原先的做法是&#xff0c;SAP只是发送发票数据过去&#xff0c;由第三方系统去自己创建PDF打印。 那么就遇到了一个问题&#xff0c;SAP中的发票打印产生修改的时候。第三方系统也要同步修改&#xff0c; 涉及…

葡萄酒术语“干”是什么意思呢?

一个初学品酒的人常常会感到力不从心&#xff0c;有如此多的术语&#xff0c;如甜、干、单宁、酒体等等&#xff0c;很容易让人迷失。嗯&#xff0c;就像情人眼里出西施一样&#xff0c;“好酒”因人而异。虽然品尝各种不同的葡萄酒是了解你喜欢什么的最好方法&#xff0c;但我…

3D渲染农场的优势体现在哪里?点进来,CG Magic小编告诉您!

目前&#xff0c;渲染的涉及也是越来越广的&#xff0c;无论是通过本地渲染还是云渲染&#xff0c;都是为了3D渲染效率更高。 渲染农场工作原理就是提升制作效率与降低成本的利器。无论大型制作公司还是小型工作室&#xff0c;甚至是个人用户&#xff0c;都会借助于3d渲染农场…

LLM:Scaling Laws for Neural Language Models (上)

论文&#xff1a;https://arxiv.org/pdf/2001.08361.pdf 发表&#xff1a;2020 摘要1&#xff1a;损失与模型大小、数据集大小以及训练所用计算量成比例&#xff0c;其中一些趋势跨越了七个量级以上。 2&#xff1a;网络宽度或深度等其他架构细节在很大范围内影响较小。3&…

AcWing:90. 64位整数乘法

0x00 基本算法第二题 算法标签:位运算 来源&#xff1a;《算法竞赛进阶指南》 描述 求 a 乘 b 对 p 取模的值。 输入格式 第一行输入整数a&#xff0c;第二行输入整数b&#xff0c;第三行输入整数p。 输出格式 输出一个整数&#xff0c;表示a*b mod p的值。 数据范围 …

探索Python数据结构与算法:解锁编程的无限可能

文章目录 一、引言1.1 数据结构与算法对于编程的重要性1.2 Python作为实现数据结构与算法的强大工具 二、列表和元组2.1 列表&#xff1a;创建列表、索引、切片和常用操作2.2 元组&#xff1a;不可变序列的特性和使用场景 三、字符串操作和正则表达式3.1 字符串的常见操作和方法…

第十四届蓝桥杯省赛PythonB组

思路: // f[i] 定义为从前 i 个中选的最大价值 // 如果不选&#xff0c;那么从前 i - 1 转移而来 f[i] f[i - 1]; // 如果选&#xff0c;那么 i - 1不能选&#xff0c;从前 i - 2 转移而来 &#xff0c;所以 f[i - 2] str[i] - a 1 // 至于为什么不是从前 i - 2 , i - 3 ...…

Spring Boot整和MyBatis!!!

目标&#xff1a; 实现添加功能实现查询功能实现删除功能实现修改功能添加日期转换器 1.搭建项目 1.1pom文件&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><vers…

windows编译TensorFlowServing

概述 整个编译打包过程的总体思路&#xff0c;是参照在linux下的编译流程&#xff0c;配置环境&#xff0c;执行编译命令&#xff0c;根据编译器/链接器反馈的错误&#xff0c;修改相应的源码或者相关库文件的存放路径&#xff0c;编译出windows平台下静态库和二进制执行文件。…

BuildRoot配置RTL8822CE WIFIBT模块(WIFI部分)

TinkerBoard2主板自带的无线模块为RTL8822CE&#xff0c;PCIe接口 之前在风火轮下载的Linux源码编译出来的BuildRoot根文件系统没有相关的驱动文件 [rootrk3399:/]# find . -name *.ko [rootrk3399:/]# lsmod Module Size Used by Not tainted [rootrk33…

Dicom Tag: Image Position,Image Orientation和Patient Position

文章目录 Image Position&#xff0c;Image Orientation和Patient PositionImage Position (0020,0032):Image Orientation (0020,0037):Patient Position(0018,5100)&#xff1a; Image Position&#xff0c;Image Orientation和Patient Position 在DICOM图像中&#xff0c;I…