金额显示大写 ,100% 结贴,,Come on!
一个文本框, 一个Lable 标签
文本框输入金额,后面动态显示大写汉字,,,,。
求案例,最好是代码简单点的,,在线等! 大写金额
[解决办法]
#region 将钱转到中文大写 包含小数
/// <summary>
/// 钱转大写
/// </summary>
/// <param name= "str "> </param>
/// <returns> </returns>
public static string ConvertUper(string x)
{
String[] tmpString = x.Split('.');
String intString = x; // 默认为整数
String decString = ""; // 保存小数部分字串
if (tmpString.Length > 1)//有小数时
{
intString = tmpString[0]; // 取整数部分
decString = tmpString[1]; // 取小数部分
}
//数字 数组
string[] Nums = new string[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
//位 数组
string[] Digits = new string[] { "", "拾", "佰", "仟" };
//单位 数组
string[] Units = new string[] { "", "万", "亿", "万亿" };
string S = ""; //返回值
int p = 0; //字符位置指针
int m = intString.Length % 4; //取模
// 四位一组得到组数
int k = (m > 0 ? intString.Length / 4 + 1 : intString.Length / 4);
// 外层循环在所有组中循环
// 从左到右 高位到低位 四位一组 逐组处理
// 每组最后加上一个单位: "[万亿]","[亿]","[万]"
for (int i = k; i > 0; i--)
{
int L = 4;
if (i == k && m != 0)
{
L = m;
}
// 得到一组四位数 最高位组有可能不足四位
string s = intString.Substring(p, L);
int l = s.Length;
// 内层循环在该组中的每一位数上循环 从左到右 高位到低位
for (int j = 0; j < l; j++)
{
//处理改组中的每一位数加上所在位: "仟","佰","拾",""(个)
int n = Convert.ToInt32(s.Substring(j, 1));
if (n == 0)
{
if (j < l - 1
&& Convert.ToInt32(s.Substring(j + 1, 1)) > 0 //后一位(右低)
&& !S.EndsWith(Nums[n]))
{
S += Nums[n];
}
}
else
{
//处理 1013 一千零"十三", 1113 一千一百"一十三"
if (!(n == 1 && (S.EndsWith(Nums[0])
[解决办法]
S.Length == 0) && j == l - 2))
{
S += Nums[n];
}
S += Digits[l - j - 1];
}
}
p += L;
// 每组最后加上一个单位: [万],[亿] 等
if (i < k) //不是最高位的一组
{
if (Convert.ToInt32(s) != 0)
{
//如果所有 4 位不全是 0 则加上单位 [万],[亿] 等
S += Units[i - 1];
}
}
else
{
//处理最高位的一组,最后必须加上单位
S += Units[i - 1];
}
}
S += "圆";
//提取小数
if (decString != "")
{
decString += "0";
decString = decString.Substring(0, 1); // 保留yi位小数位
string strJiao = string.Empty;
switch (decString)
{
case "0": strJiao = ""; break;
case "1": strJiao = "壹"; break;
case "2": strJiao = "贰"; break;
case "3": strJiao = "叁"; break;
case "4": strJiao = "肆"; break;
case "5": strJiao = "伍"; break;
case "6": strJiao = "陆"; break;
case "7": strJiao = "柒"; break;
case "8": strJiao = "捌"; break;
case "9": strJiao = "玖"; break;
}
if (strJiao != "")
{
strJiao += "角";
return S + strJiao;
}
}
return S;
}
#endregion
[解决办法]
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
var s = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"];
var s1 = ["", "拾", "佰", "仟"];
var s2 = ["圆", "万", "亿", "万亿"];
$(document).ready(function () {
$("#zhuan").click(function () {
var zhi = $("#qian1").val();
var zu = zhi.split('.');
var zuqian = "";
var zuhou = "";
var fen = parseInt((zu[0].length - 1) / 4); //分为四组
var yu = zu[0].length % 4;
if (yu == 0) {
yu = 4;
}
for (var i = fen; i >= 0; i--) {
if (i == fen) {
for (var u = yu; u >= 1; u--) {
zuqian += s[zu[0].substring(yu - u, yu - u + 1)];
if (zu[0].substring(yu - u, yu - u + 1) != 0) {
zuqian += s1[u - 1]
}
}
} else {
for (var e = 3; e >= 0; e--) {
zuqian += s[zu[0].substring((fen - i - 1) * 4 + yu + 3 - e, (fen - i - 1) * 4 + yu + 4 - e)];
if (zu[0].substring((fen - i - 1) * 4 + yu + 3 - e, (fen - i - 1) * 4 + yu + 4 - e) != 0) {
zuqian += s1[e];
}
}
}
zuqian += s2[i];
}
if (zu.length > 1) {
zuhou = s[zu[1].substring(0, 1)] + "角";
if (zu[1].length == 2) {
zuhou += s[zu[1].substring(1, 2)] + "分";
}
}
$("#qian2").html(zuqian + zuhou);
});
})
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="qian1" type="text" />
<br />
<input id="zhuan" type="button" value="转换" />
<br />
<span id="qian2" style="color: Red;"></span>
</div>
</form>
</body>
</html>用JS操作的 要添加jquery的引用
其中span其实就是一个label
[解决办法]
<script language="JavaScript">
function daxie() { //定义大写数组
this.values = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"];
this.digits = ["", "拾", "佰", "仟"];
}
function daxie.prototype.getDaXie(money) {
if (isNaN(money)) return ""; //如果不是数值型,直接返回空
var number = Math.round(money * 100) / 100; //取数值的整数
number = number.toString(10).split('.'); //整数和小数分开
var moneyInt = number[0]; //整数部分
var len = moneyInt.length; //整数的长度
if (len > 12) //长度如果超出范围
return "数值超出范围!支持的最大数为 999999999999.99!";
var returnValue = this.millonTrans(moneyInt.slice(-4));
if (len > 4) //多于万位
returnValue = this.millonTrans(moneyInt.slice(-8, -4)) + (moneyInt.slice(-8, -4) != "0000" ? "万" : "") + returnValue;
if (len > 8) //多于亿位
returnValue = this.millonTrans(moneyInt.slice(-12, -8)) + "亿" + returnValue;
if (returnValue != "")
returnValue += "圆"; //添加最后一个字符
if (number.length == 2) //是否是带小数的金额
{
var cok = number[1].split('');
if (returnValue != ""
[解决办法]
cok[0] != "0")
returnValue += this.values[parseInt(cok[0])] + (cok[0] != "0" ? "角" : ""); //十位数显示角
if (cok.length >= 2)
returnValue += this.values[parseInt(cok[1])] + "分"; //个位数显示分
}
if (returnValue != "" && !/分$/.test(returnValue) && !/角$/.test(returnValue)) //使用正则判断是否有小数 //修改后加上条件 !/角$/.test(returnValue)
returnValue += "整";
return returnValue;
}
function daxie.prototype.millonTrans(strTemp) {
var money = strTemp.split(''); //将金额转换为数组
var mLength = money.length - 1; //金额的长度
var returnValue = "";
for (var i = 0; i <= mLength; i++) //遍历每个元素
returnValue += this.values[parseInt(money[i])] + (money[i] != '0' ? this.digits[mLength - i] : "");
returnValue = returnValue.replace(/零+$/, "").replace(/零{2,}/, "零"); //返回转换后的数值
return returnValue;
}
var stmp = "";
var daXieM = new daxie();
function strTrans(strT) {
if (strT.value == stmp) return;
var ms = strT.value.replace(/[^\d\.]/g, "").replace(/(\.\d{2}).+$/, "$1"); //验证用户的输入
var txt = ms.split("."); //分割成数组
while (/\d{4}(,
[解决办法]
$)/.test(txt[0]))
txt[0] = txt[0].replace(/(\d)(\d{3}(,
[解决办法]
$))/, "$1,$2"); //科学计数法表示形式
strT.value = stmp = txt[0] + (txt.length > 1 ? "." + txt[1] : "");
daxieTxt.value = daXieM.getDaXie(parseFloat(ms)); //显示大写
document.getElementById("Label1").innerHTML = daXieM.getDaXie(parseFloat(ms)); //显示大写
}
</script>
<script>
function aa() {
var cc = document.getElementById("Label1").innerHTML;
// if (confirm('您确定要入金“'+cc+'”吗?')) {
// alert("入金成功!");
// }
// else {
// return false;
// }
if (!confirm('您确定要入金"' + cc + '"吗?')) {
return false;
}
}
</script>
小写金额:<input type="text" name="xiaoxieTxt" onkeyup="strTrans(this)"><br>
大写金额:<input type="text" name="daxieTxt" size=60 readonly="readonly"></body>
大写金额:<asp:Label ID="Label1" runat="server" Text="Label" ForeColor="Red"></asp:Label>
<form id="form1" runat="server">
<asp:Button ID="Button2" runat="server" Text="Button" OnClientClick=" return aa()"
onclick="Button2_Click" />
</form>
</html>
</body>
</html>