055:vue工具 --- 人民币小写转化为大写

news2024/10/6 14:22:11

在这里插入图片描述

第055个

查看专栏目录: VUE ------ element UI


专栏目标

在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。

(1)提供vue2的一些基本操作:安装、引用,模板使用,computed,watch,生命周期(beforeCreate,created,beforeMount,mounted, beforeUpdate,updated, beforeDestroy,destroyed,activated,deactivated,errorCaptured,components,)、 $root , $parent , $children , $slots , $refs , props, $emit , eventbus ,provide / inject, Vue.observable, $listeners, $attrs, $nextTick , v-for, v-if, v-else,v-else-if,v-on,v-pre,v-cloak,v-once,v-model, v-html, v-text, keep-alive,slot-scope, filters, v-bind,.stop, .native, directives,mixin,render,国际化,Vue Router等

(2)提供element UI的经典操作:安装,引用,国际化,el-row,el-col,el-button,el-link,el-radio,el-checkbox ,el-input,el-select, el-cascader, el-input-number, el-switch,el-slider, el-time-picker, el-date-picker, el-upload, el-rate, el-color-picker, el-transfer, el-form, el-table, el-tree, el-pagination,el-badge,el-avatar,el-skeleton, el-empty, el-descriptions, el-result, el-statistic, el-alert, v-loading, $message, $alert, $prompt, $confirm , $notify, el-breadcrumb, el-page-header,el-tabs ,el-dropdown,el-steps,el-dialog, el-tooltip, el-popover, el-popconfirm, el-card, el-carousel, el-collapse, el-timeline, el-divider, el-calendar, el-image, el-backtop,v-infinite-scroll, el-drawer等

本文章目录

    • 专栏目标
    • 应用场景
    • 示例效果
    • 示例源代码(共180行)

应用场景

vue项目中,如何将人民币小写转化为大写呢,下面的示例就是这样的一个小工具,具体的看源代码

示例效果

在这里插入图片描述

示例源代码(共180行)

/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2023-12-18
*/

<template>
	<div class="djs-box">
		<div class="topBox">
			<h3>vue工具:人民币小写转化为大写 </h3>
			<div>大剑师兰特, 还是大剑师兰特,gis-dajianshi</div>
		</div>
		<div class="dajianshi">
			<el-input type="textarea" :rows="10" v-model="textdata" style="font-size: 18px;"></el-input>
		</div>
		<h4>
			<el-button type="success" size="small" @click="convertCurrency(textdata)">转换为人民币大写</el-button>
		</h4>
	</div>
</template>

<script>
	export default {
		data() {
			return {
				textdata: '998.55',
			}
		},
		mounted() {

		},
		methods: {
			convertCurrency(currencyDigits) {
				// Constants: 
				var MAXIMUM_NUMBER = 99999999999.99;
				// Predefine the radix characters and currency symbols for output: 
				var CN_ZERO = "零";
				var CN_ONE = "壹";
				var CN_TWO = "贰";
				var CN_THREE = "叁";
				var CN_FOUR = "肆";
				var CN_FIVE = "伍";
				var CN_SIX = "陆";
				var CN_SEVEN = "柒";
				var CN_EIGHT = "捌";
				var CN_NINE = "玖";
				var CN_TEN = "拾";
				var CN_HUNDRED = "佰";
				var CN_THOUSAND = "仟";
				var CN_TEN_THOUSAND = "万";
				var CN_HUNDRED_MILLION = "亿";
				var CN_SYMBOL = "人民币";
				var CN_DOLLAR = "元";
				var CN_TEN_CENT = "角";
				var CN_CENT = "分";
				var CN_INTEGER = "整";
				// Variables: 
				var integral; // Represent integral part of digit number. 
				var decimal; // Represent decimal part of digit number. 
				var outputCharacters; // The output result. 
				var parts;
				var digits, radices, bigRadices, decimals;
				var zeroCount;
				var i, p, d;
				var quotient, modulus;
				// Validate input string: 
				currencyDigits = currencyDigits.toString();
				if (currencyDigits == "") {
					alert("请输入小写金额!");
					return "";
				}
				if (currencyDigits.match(/[^,.\d]/) != null) {
					alert("小写金额含有无效字符!");
					return "";
				}
				if ((currencyDigits).match(/^((\d{1,3}(,\d{3})*(.((\d{3},)*\d{1,3}))?)|(\d+(.\d+)?))$/) == null) {
					alert("小写金额的格式不正确!");
					return "";
				}

				// Normalize the format of input digits: 
				currencyDigits = currencyDigits.replace(/,/g, ""); // Remove comma delimiters. 
				currencyDigits = currencyDigits.replace(/^0+/, ""); // Trim zeros at the beginning. 
				// Assert the number is not greater than the maximum number. 
				if (Number(currencyDigits) > MAXIMUM_NUMBER) {
					alert("金额过大,应小于1000亿元!");
					return "";
				}

				// Process the coversion from currency digits to characters: 
				// Separate integral and decimal parts before processing coversion: 
				parts = currencyDigits.split(".");
				if (parts.length > 1) {
					integral = parts[0];
					decimal = parts[1];
					// Cut down redundant decimal digits that are after the second. 
					decimal = decimal.substr(0, 2);
				} else {
					integral = parts[0];
					decimal = "";
				}
				// Prepare the characters corresponding to the digits: 
				digits = new Array(CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT,
					CN_NINE);
				radices = new Array("", CN_TEN, CN_HUNDRED, CN_THOUSAND);
				bigRadices = new Array("", CN_TEN_THOUSAND, CN_HUNDRED_MILLION);
				decimals = new Array(CN_TEN_CENT, CN_CENT);
				// Start processing: 
				outputCharacters = "";
				// Process integral part if it is larger than 0: 
				if (Number(integral) > 0) {
					zeroCount = 0;
					for (i = 0; i < integral.length; i++) {
						p = integral.length - i - 1;
						d = integral.substr(i, 1);
						quotient = p / 4;
						modulus = p % 4;
						if (d == "0") {
							zeroCount++;
						} else {
							if (zeroCount > 0) {
								outputCharacters += digits[0];
							}
							zeroCount = 0;
							outputCharacters += digits[Number(d)] + radices[modulus];
						}
						if (modulus == 0 && zeroCount < 4) {
							outputCharacters += bigRadices[quotient];
							zeroCount = 0;
						}
					}
					outputCharacters += CN_DOLLAR;
				}
				// Process decimal part if there is: 
				if (decimal != "") {
					for (i = 0; i < decimal.length; i++) {
						d = decimal.substr(i, 1);
						if (d != "0") {
							outputCharacters += digits[Number(d)] + decimals[i];
						}
					}
				}
				// Confirm and return the final output string: 
				if (outputCharacters == "") {
					outputCharacters = CN_ZERO + CN_DOLLAR;
				}
				if (decimal == "") {
					outputCharacters += CN_INTEGER;
				}
				outputCharacters = outputCharacters;
				this.textdata=outputCharacters;
			}
		}

	}
</script>
<style scoped>
	.djs-box {
		width: 900px;
		height: 580px;
		margin: 50px auto;
		border: 1px solid seagreen;
	}

	.topBox {
		margin: 0 auto 0px;
		padding: 10px 0 20px;
		background: #666;
		color: #fff;
	}

	.dajianshi {
		width: 90%;
		height: 300px;
		margin: 50px auto 0;
	}
</style>


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

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

相关文章

2023年国赛高教杯数学建模D题圈养湖羊的空间利用率解题全过程文档及程序

2023年国赛高教杯数学建模 D题 圈养湖羊的空间利用率 原题再现 规模化的圈养养殖场通常根据牲畜的性别和生长阶段分群饲养&#xff0c;适应不同种类、不同阶段的牲畜对空间的不同要求&#xff0c;以保障牲畜安全和健康&#xff1b;与此同时&#xff0c;也要尽量减少空间闲置所…

读取小数部分

1.题目描述 2.题目分析 //假设字符串为 char arr[] "123.4500"; 1. 找到小数点位置和末尾位置 代码如下&#xff1a; char* start strchr(arr, .);//找到小数点位置char* end start strlen(start) - 1;//找到末尾位置 如果有不知道strchr()用法的同学&#xf…

Html+单页面引入element以及Vue框架引用地址报错(unpkg.com国内无法访问可代替方案)

问题 单页面引入element以及vue 地址报错&#xff0c;请求超时 使用的引用地址是官网上提供&#xff0c;但是没解决问题 一、原因&#xff1a; unpkg也没有幸免于难&#xff0c;也被墙了&#xff0c;unpkg上的相关资源都不能访问&#xff0c;才导致项目资源加载不出。 二、…

linux gdb反汇编定位问题

日前解决一现网问题遇到补丁加载未生效现象&#xff0c;想要验证流程是否走进补丁代码&#xff0c;由于补丁函数和原函数名称一样&#xff0c;且修改代码较少&#xff0c;通过普通gdb方法难以看出是否走进补丁&#xff0c;但可用gdb反汇编方法来验证。 gdb该进程&#xff0c;之…

cdr格式怎么打开?cdr文件查看工具CDR Viewer功能介绍

CDRViewer Pro for Mac是一款专业的矢量图形文件查看器&#xff0c;主要用于打开、浏览和查看CorelDRAW&#xff08;CDR&#xff09;文件。以下是该软件的主要功能和特点&#xff1a; CDR文件支持&#xff1a;CDRViewer Pro可以快速加载和显示CorelDRAW&#xff08;CDR&#x…

python之双链表

双链表简单讲解 双向链表&#xff08;doubly linked list&#xff09;是一种链式数据结构&#xff0c;它的每个节点包含两个指针&#xff0c;一个指向前一个节点&#xff0c;一个指向后一个节点。与单向链表相比&#xff0c;双向链表可以在任何位置进行插入和删除操作&#xf…

MDC硬件笔记

学习资源来自华为 MDC210 80pin低速信号接口 4832pin 低速连接器的可插拔次数≤20 MiniFakra 视频接口 MiniFakra 视频连接器的可插拔次数≤ 25 次。 车载以太接口 1、2是100兆&#xff0c;3、4是1000兆 MTB300转接盒 前后面板接口总览&#xff1a; 1 低速接口1 40个…

如何使用Promethues监控系统指标并进行告警

公众号「架构成长指南」&#xff0c;专注于生产实践、云原生、分布式系统、大数据技术分享。 前言 从零开始&#xff1a;使用Prometheus与Grafana搭建监控系统 克服网络障碍&#xff1a;Prometheus如何通过间接方式采集目标服务数据 在以上二节&#xff0c;我们介绍了如何使…

若依 ruoyi-vue3 集成aj-captcha实现滑块、文字点选验证码

目录 0. 前言0.1 说明 1. 后端部分1.1 添加依赖1.2. 修改 application.yml1.3. 新增 CaptchaRedisService 类1.4. 添加必须文件1.5. 移除不需要的类1.6. 修改登录方法1.7. 新增验证码开关获取接口1.8. 允许匿名访问 2. 前端部分&#xff08;Vue3&#xff09;2.1. 新增依赖 cryp…

re:Invent2023大会隆重推出自研芯片Graviton4和Trainium2

目录 一、前言 二、体验Graviton系列产品 &#xff08;一&#xff09;创建普通的EC2实例 &#xff08;二&#xff09;创建Graviton处理器的EC2实例 &#xff08;三&#xff09;远程到服务器 方式1&#xff1a;创建成功时连接 方式2&#xff1a;SSH客户端 方式3&#xff1a;正确…

airpods 无法使用Windows电脑充电的解决方法

打开设置 -> 蓝牙与其他设备 -> 显示更多设备 往下翻&#xff0c;找到“更多设备与打印机设置”&#xff0c;打开设备界面&#xff1a; 打开" Airpods Case"&#xff0c;找到“硬件”选项 -> 双击"符合HID标准的供应商定义设备" -> “驱动程序…

Markdown(轻量级标记语言)基本语法教程

学习总是避免不了记笔记&#xff0c;除了在线的记录一些博客外&#xff0c;也会需要一些不方便在线记录的线下笔记&#xff0c;那么找到一个好用方便的适合记录代码的工具&#xff0c;就很重要&#xff0c;这里给大家分享一下Markdown基本语法&#xff0c;可以很简单的达成我们…

GPT-4.5!!!

GPT-4 还没用明白&#xff0c;GPT-4.5 就要发布了。 最近&#xff0c;OpenAI 泄露了 GPT-4.5 的发布页面&#xff0c;除了进一步增强复杂推理和跨模态理解&#xff0c;GPT-4.5 增加了一个更加强大的功能——3D。 3D 功能的进一步支持&#xff0c;也就意味着多模态最后一块版图…

Java21新特性-虚拟线程

虚拟线程是轻量级线程&#xff08;类似于 Go 中的 “协程&#xff08;Goroutine&#xff09;”&#xff09;&#xff0c;可以减少编写、维护和调度高吞吐量并发应用程序的工作量。 线程是可供调度的最小处理单元&#xff0c;它与其他类似的处理单元并发运行&#xff0c;并且在…

设计模式——责任链模式(行为模式)

引言 责任链模式是一种行为设计模式&#xff0c; 允许你将请求沿着处理者链进行发送。 收到请求后&#xff0c; 每个处理者均可对请求进行处理&#xff0c; 或将其传递给链上的下个处理者。 问题 假如你正在开发一个在线订购系统。 你希望对系统访问进行限制&#xff0c; 只允…

Rsyslog 8.1901.0 配置Tls模式加密传输log

需求背景&#xff1a;客户需要配置Tls加密模式上传log&#xff0c;老虎动手来搞搞&#xff0c; 推荐看下面的技术文档&#xff0c;官方的没有下面这个好用 https://rsyslog.readthedocs.io/en/latest/tutorials/tls_cert_summary.html 我们可以在github上下载官方文档编译后查看…

OCC 创建简单几何

使用 OCC 创建 正方体和圆柱体&#xff0c;并且通过布尔运算&#xff0c;切除正方体内的圆柱体&#xff0c;保存 stl 几何模型。 #include <iostream> #include <iomanip> #include "BRepPrimAPI_MakeCylinder.hxx" #include "BRepPrimAPI_MakeBox…

Elasticsearch的批量bulk 提交 写入的方式会有顺序问题吗?

Elasticsearch的分布式特性可能会导致写入操作的执行顺序与提交顺序稍有不同。在分布式环境中,Elasticsearch将数据分散到不同的节点上进行存储和处理,因此写入操作的执行顺序可能会受到网络延迟、负载均衡等因素的影响。 根源在于ES的分布式架构。如上图所示,客户端的命令首…

C++学习笔记(十五)

继承 继承是面向对象三大特性之一 有些类与类之间存在特殊的关系&#xff0c;例如下图中&#xff1a; 我们发现&#xff0c;定义这些类时&#xff0c;下级别的成员除了拥有上一级的共性&#xff0c;还有自己的特性。 这个时候我们就可以考虑利用继承的技术&#xff0c;减少重…

自动封箱打包码垛缠绕流水线案例

广西交投在某地新建工厂后&#xff0c;需要建设一条生产隧道灯&#xff0c;后段自动封箱打包码垛缠绕包装线。 凯隆包装在深入了解客户需求后&#xff0c;结合客户实际生产情况&#xff0c;为客户量身定制了集智能感应系统、产品自动折盖上下封箱、捆扎两道打包带、码垛机械臂自…