数字 1 转换成 “一” (10-> “十”,25-> “二十五”,.....)

这段代码实现了一个将数字转换为汉字的功能,包括1到10000的数字。主要方法`getNumStr(int num)`通过递归处理千、百、十、个位的数字,并调用`getSingleNumStr(int num)`来获取单个数字对应的汉字字符串。最终通过StringManager类获取汉字的大写形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public static string getNumStr(int num)
	{
		string strnum = string.Empty;
		int temp_num = num;
		
		bool has_0 = false;
		
		//千
		int temp_qian = temp_num / 1000;
		if(temp_qian > 0)
		{
			strnum += getNumStr(temp_qian);
			strnum += getSingleNumStr(1000);
		}
		
		
		temp_num = temp_num % 1000;
		//百
		int temp_bai = temp_num / 100;
		if(temp_bai > 0)
		{
			strnum += getSingleNumStr(temp_bai);
			strnum += getSingleNumStr(100);
		}
		else if(temp_qian > 0)
		{
			has_0 = true;
		}
		
		temp_num = temp_num % 100;
		//十
		int temp_shi = temp_num / 10;
		if(temp_shi > 0)
		{
			if(has_0)
			{
				strnum += getSingleNumStr(0);
				has_0 = false;
			}
			
			if(temp_shi != 1)
				strnum += getSingleNumStr(temp_shi);
			strnum += getSingleNumStr(10);
		}
		else
		{
			if(temp_bai > 0)
				has_0 = true;
		}
		
		temp_num = temp_num % 10;
		if(temp_num > 0)
		{
			if(has_0)
			{
				strnum += getSingleNumStr(0);
				has_0 = false;
			}
			
			strnum += getSingleNumStr(temp_num);
		}
		
		return strnum;
	}
	
	private static string getSingleNumStr(int num)
	{
		string str_id = "";
		switch(num)
		{
		case 0:
			str_id = "txt_0";//零
			break;
		case 1:
			str_id = "txt_1";//一
			break;
		case 2:
			str_id = "txt_2";//二
			break;
		case 3:
			str_id = "txt_3";//三
			break;
		case 4:
			str_id = "txt_4";//四
			break;
		case 5:
			str_id = "txt_5";//五
			break;
		case 6:
			str_id = "txt_6";//六
			break;
		case 7:
			str_id = "txt_7";//七
			break;
		case 8:
			str_id = "txt_8";//八
			break;
		case 9:
			str_id = "txt_9";//九
			break;
		case 10:
			str_id = "txt_10";//十
			break;
		case 100:
			str_id = "txt_100";//百
			break;
		case 1000:
			str_id = "txt_1000";//千
			break;
		case 10000:
			str_id = "txt_10000";//万
			break;
		default:
			break;
		}
		return StringManager.GetInstance ().GetValueEx (str_id);// 这里是获取大写(一,二,三,四,五,六,七,八,九,十,零等方法)
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值