C#实现阿拉伯数字转换为汉字数字

项目中用到,保存下来为日后用到节约时间

公共方法(将单个数字转换为汉字)

 private char ToNum(char x)
        {
            string strChnNames = "零一二三四五六七八九";
            string strNumNames = "0123456789";
            return strChnNames[strNumNames.IndexOf(x)];
        } 

  

1、转换为为整数(最高位数为亿)

 private string ChangeInt(string x)
 {
 string[] strArrayLevelNames=new string[4] {"","十","百","千"};
 string ret = "";
 int i;
 for (i=x.Length-1;i>=0;i--)
 if (x[i] == ‘0‘)
  ret = ToNum(x[i]) + ret;
 else
  ret = ToNum(x[i]) + strArrayLevelNames[x.Length-1-i] + ret;
 while ((i=ret.IndexOf("零零"))!=-1)
 ret=ret.Remove(i, 1);
 if (ret[ret.Length-1]==‘零‘ && ret.Length>1)
 ret=ret.Remove(ret.Length-1,1);
 if (ret.Length>=2 && ret.Substring(0,2)=="一十")
 ret=ret.Remove(0,1);
 return ret;
 } 

 // 转换整数
 private string ToInt(string x)
 {
 int len = x.Length;
 string ret,temp;
 if (len<=4)
 ret = ChangeInt(x);
 else if (len<=8)
 {
 ret = ChangeInt(x.Substring(0,len-4)) + "万";
 temp = ChangeInt(x.Substring(len-4,4));
 if (temp.IndexOf("千")==-1 && temp!="")
  ret += "零" + temp;
 else
  ret += temp;
 }
 else
 {
 ret=ChangeInt(x.Substring(0,len-8)) + "亿";
 temp=ChangeInt(x.Substring(len-8,4));
 if (temp.IndexOf("千")==-1 && temp!="")
  ret += "零" + temp;
 else
  ret += temp;
 ret += "万";
 temp = ChangeInt(x.Substring(len-4,4));
 if (temp.IndexOf("千")==-1 && temp!="")
  ret += "零" + temp;
 else
  ret += temp;
 }
 int i;
 if ((i=ret.IndexOf("零万"))!=-1)
 ret = ret.Remove(i+1,1);
 while ((i=ret.IndexOf("零零"))!=-1)
 ret = ret.Remove(i,1);
 if (ret[ret.Length-1]==‘零‘ && ret.Length>1)
 ret = ret.Remove(ret.Length-1,1);
 return ret;
 }
 

2、转换为小数

private string ToDecimal(string x)
 {
 string ret="";
 for (int i=0;i<x.Length;i++)
 ret += ToNum(x[i]);
 return ret;
 } 

 public string NumToChn(string x)
 {
 if (x.Length==0)
 return "";
 string ret="";
 if (x[0]==‘-‘)
 {
 ret="负";
 x=x.Remove(0,1);
 }
 if (x[0].ToString()==".")
 x="0"+x;
 if (x[x.Length-1].ToString()==".")
 x=x.Remove(x.Length-1,1);
 if (x.IndexOf(".")>-1)
 ret += ToInt(x.Substring(0,x.IndexOf(".")))+"点"+ToDecimal(x.Substring(x.IndexOf(".")+1));
 else
 ret += ToInt(x);
 return ret;
 } 

 

时间: 2024-10-14 03:51:55

C#实现阿拉伯数字转换为汉字数字的相关文章

java实现 阿拉伯数字转换为汉字数字 算法

package test; public class NumberFormatTest { static String[] units = { "", "十", "百", "千", "万", "十万", "百万", "千万", "亿","十亿", "百亿", "千亿",

【iOS开发系列】将阿拉伯数字转换为中文数字

/** * 将阿拉伯数字转换为中文数字 */ +(NSString *)translationArabicNum:(NSInteger)arabicNum { NSString *arabicNumStr = [NSString stringWithFormat:@"%ld",(long)arabicNum]; NSArray *arabicNumeralsArray = @[@"1",@"2",@"3",@"4&q

将阿拉伯数字转换为中文书面数字

前几天有人在群里写这个,好像挺纠结的样子,就顺手帮他写了一个. 主要思路是中文的数字读法是四位四位分的,高位数字的读法就是xxxx亿xxxx万xxxx. void Start () { //测试数据 Debug.Log (full_toword(987654321)); Debug.Log (full_toword(907654321)); Debug.Log (full_toword(9000900654321)); Debug.Log (full_toword(9000900000000))

数字转换为汉字小算法

/** * 将数字转换成对应的汉字 * * @param number * 数字 * @return 对应的汉字 */ public static String intToChinese(int number) { char[] val = String.valueOf(number).toCharArray(); int len = val.length; StringBuilder sb = new StringBuilder(); for (int i = 0; i < len; i++)

键盘录入数字,输出汉字数字,如键盘录入123,输出一二三。

import java.util.Scanner; public class Test3 { /** *  从键盘接受一个数字,列出该数字的中文表示格式,例如:键盘输入123,打印出一二三: * 键盘输入3103,打印出三一零三. * @param args */ public static void main(String[] args) { //键盘录入数据: Scanner sc=new Scanner(System.in); // 引导用户: System.out.println("请输

将阿拉伯数字转换为大写

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible"

阿拉伯数字 转 汉字大写

参考 算法的乐趣 阿拉伯数字 转 汉字大写   如 123 > 壹佰贰拾叁 思路: 如:a = 123,1234,1200 按权位分为 {"","拾","佰","仟"}, 按节权位分{"","万","亿","万亿"} 1.将 a 按4位分隔,循环每个分隔,通过位移确定权位,进行转换中文. 然后确定每个分隔后的节权位. 注意对0的转换: 1.1

阿拉伯数字与中文数字的转换----------相互转化

今天继续看<算法的乐趣>,学习了阿拉伯数字与中文数字的转化. 汉字用零一二三四五六七八九作为基本计数,与阿拉伯数字靠数字偏移位置的权位不一样.中文数字是才有"数字+权位"的方式组成数字,比方百,千,万. 中文数字每一个数字后都会跟上一个权位.权位就是数字的量值,相当于阿拉伯数字的数位. 中文计数以万为小节,万下面没有节权,万之上是亿为节权. 中文另一个特点是多变的"零",大概总结为三个规则: 1.以10000为小节.小节的结尾即使是0,也不使用"

C#量转换为汉字表达

/* 创造者:菜刀打好博客 * 创建日期: 2014年09一个月04号码 * 特征:Money类型转换 * */ namespace Net.String.ConsoleApplication { using System; using System.Collections.Generic; public class MoneyHelper { public static string[] chineseDigits = new string[] { "零", "壹"