人民币大小写转化

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Text;
using System.Security.Cryptography;

namespace VankeWeb.BaseClass
{
public class ConvertMoneyType
{
#region 小写金额转换为大写金额
/// <summary>
/// 人民币大写金额
/// </summary>
/// <param name="value">人民币数字金额值</param>
/// <param name="isLowercase">是否返回人民币小写金额</param>
/// <returns>返回人民币大写/小写金额</returns>
public string RMBAmount(double value, bool isLowercase)
{
string capResult = "";
string capValue = String.Format("{0:f4}", value);
bool addMinus = (capValue.Substring(0, 1) == "-");
int beginPos = addMinus ? 1 : 0;
int dotPos = addMinus ? capValue.IndexOf(".") - 1 : capValue.IndexOf(".");
bool addInt = (dotPos == 0);
//获取整数部分
string capInt = capValue.Substring(beginPos, dotPos);
//获取小数部分
string capDec = capValue.Substring(dotPos + 1);

if (dotPos > 0)
{

capResult = ConvertIntToUppercaseAmount(capInt) + ConvertDecToUppercaseAmount(capDec.TrimStart(‘.‘), Convert.ToDouble(capInt) != 0 ? true : false);
}
else
{
capResult = ConvertIntToUppercaseAmount(capDec);
}
if (addMinus) capResult = "负" + capResult;
if (addInt) capResult += "整";
return isLowercase ? RMBLowercaseAmount(capResult) : capResult;
}

private string ConvertZero(string str)
{
string z = str.Substring(1);//截取小数点取得小数
if (Convert.ToInt32(z) == 0)
{
return "0";
}
else
{
return z;
}
}

/// <summary>
/// 将人民币大写转换成小写
/// </summary>
/// <param name="capValue">大写金额值</param>
/// <returns>返回人民币小写金额</returns>
private string RMBLowercaseAmount(string capValue)
{
string capResult = "";
string currCap = "";
for (int i = 0; i < capValue.Length; i++)
{
currCap = capValue.Substring(i, 1);
switch (currCap)
{
case "零": capResult += "〇"; break;
case "壹": capResult += "一"; break;
case "贰": capResult += "二"; break;
case "叁": capResult += "三"; break;
case "肆": capResult += "四"; break;
case "伍": capResult += "五"; break;
case "陆": capResult += "六"; break;
case "柒": capResult += "七"; break;
case "捌": capResult += "八"; break;
case "玖": capResult += "九"; break;
case "拾": capResult += "十"; break;
case "佰": capResult += "百"; break;
case "仟": capResult += "千"; break;
case "万": capResult += "万"; break;
default: capResult += currCap; break;
}
}
return capResult;
}

/// <summary>
/// 转换小数为大写金额
/// </summary>
/// <param name="capValue">小数值</param>
/// <param name="addZero">是否增加零位</param>
/// <returns>返回大写金额</returns>
private string ConvertDecToUppercaseAmount(string capValue, bool addZero)
{

string DXSZ = "零壹贰叁肆伍陆柒捌玖";
string DXDW = "毫厘分角元拾佰仟万拾佰仟亿拾佰仟万兆拾佰仟万亿";

string currCap = "";
string capResult = "";
int prevChar = addZero ? -1 : 0;
int currChar = 0;
int posIndex = 3;
if (Convert.ToInt16(capValue) == 0) return "";
for (int i = 0; i < capValue.Length; i++)
{
currChar = Convert.ToInt16(capValue.Substring(i, 1));
if (currChar != 0)
{
currCap = DXSZ.Substring(currChar, 1) + DXDW.Substring(posIndex, 1);
}
else
{
if (Convert.ToInt16(capValue.Substring(i)) == 0)
{
break;
}
else if (prevChar != 0)
{
currCap = "零";
}
}
capResult += currCap;
prevChar = currChar;
posIndex -= 1;
currCap = "";
}
return capResult;
}

/// <summary>
/// 转换整数为大写金额
/// </summary>
/// <param name="capValue">整数值</param>
/// <returns>返回大写金额</returns>
private string ConvertIntToUppercaseAmount(string capValue)
{

string DXSZ = "零壹贰叁肆伍陆柒捌玖";
string DXDW = "毫厘分角元拾佰仟万拾佰仟亿拾佰仟万兆拾佰仟万亿";

string currCap = "";
string capResult = "";
int prevChar = -1;
int currChar = 0;
int posIndex = 4;
if (Convert.ToDouble(capValue) == 0) return "";
for (int i = capValue.Length - 1; i >= 0; i--)
{
currChar = Convert.ToInt16(capValue.Substring(i, 1));
if (posIndex > 22)
{
break;
}
else if (currChar != 0)
{
currCap = DXSZ.Substring(currChar, 1) + DXDW.Substring(posIndex, 1);
}
else
{
switch (posIndex)
{
case 4: currCap = "元"; break;
case 8: currCap = "万"; break;
case 12: currCap = "亿"; break;
case 17: currCap = "兆"; break;
default: break;
}
if (prevChar != 0)
{
if (currCap != "")
{
if (currCap != "元") currCap += "零";
}
else
{
currCap = "零";
}
}
}
capResult = currCap + capResult;
prevChar = currChar;
posIndex += 1;
currCap = "";
}
return capResult;
}
#endregion
}
}

时间: 2024-07-30 12:49:57

人民币大小写转化的相关文章

人民币大小写金额

public string CmycurD(decimal num) { string str1 = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字 string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字 string str3 = ""; //从原num值中取出的值 string str4 = ""; //数字的字符串形式 string str5 = ""; //人民

vim 大小写转化命令

vim中大小写转化的命令是<blockquote>gu或者gU</blockquote>形象一点的解释就是小u意味着转为小写:大U意味着转为大写. 剩下的就是对这两个命令的限定(限定操作的行,字母,单词)等等<ol><li>整篇文章大写转化为小写打开文件后,无须进入命令行模式.<blockquote>键入:ggguG</blockquote>解释一下:ggguG分作三段gg gu G<strong>gg</stron

数字大小写转化

//日期转化为大小写 public static String dataToUpper(String dateStr) { String res=""; SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Date date = null; try { date = df.parse(dateStr); } catch (Exception e) { // 日期型字符串格式错误 System.out.p

字母大小写转化 1.0

#include<stdio.h> int main() {     char c;     scanf("%c",&c);     printf("输入一个字符:\n");     if(c>=65&&c<=90)     {          c=c+32;        printf("将大写转化为小写: %c",c);      }      if(c>=97&&c&l

c++ String 大小写转化

1 string toUpperString(string str) 2 { 3 transform(str.begin(), str.end(), str.begin(), (int (*)(int))toupper); 4 return str; 5 } 6 string toLowerString(string str) 7 { 8 transform(str.begin(), str.end(), str.begin(), (int (*)(int))tolower); 9 return

Java大小写转化

java大写转小写 public String toLowerCase(String str){ char[] chars = str.toCharArray(); for (int i = 0; i < chars.length; i++) { if ('A' <= chars[i] && chars[i]<= 'Z'){ chars[i] += 32; } } return String.valueOf(chars); } java小写转大写 public Strin

Java练习 SDUT-2746_大小写转换

大小写转换 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description X现在要学习英文以及各种稀奇古怪的字符的了.现在他想把一串字符中的小写字母变成大写字符,大写字母变成小写字母,其他的保持不变. Input 输入有多组. 每组输入一个字符串,长度不大于80,不包含空格. Output 输出转换后的字符串 Sample Input A* B+ Sample Output a* b+ Hint Source zmx 大小写转化的

OCAC暑期比赛第一场 I题 大小写转换密码锁 题解

大小写转换密码锁原题链接:http://codeforces.com/problemset/problem/131/A[题目描述]对于一个字符串 s 来说,它的大小写转换密码锁是对 s 的每一位字符进行大小写转换后得到的目标字符串.(也就是说,对于 s 上面的每一位字符 c,如果 c 是大写字母,则将其转换成对应的小写字母:如果 c 是小写字母,则将其转换为大写字母)但是并不是所有的字符串都是经过加密的,我们定义一个字符串是大小写转换密码锁,当且仅当:1.这个字符串全部都是大写字母:2.或者这个

SQL常用函数集锦

一.字符转换函数1.ASCII()返回字符表达式最左端字符的ASCII 码值.在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错. 2.CHAR()将ASCII 码转换为字符.如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL . 3.LOWER()和UPPER()LOWER()将字符串全部转为小写:UPPER()将字符串全部转为大写. 4.STR()把数值型数据转换为字符型数据.STR (<float_exp