直接调用即可

代码如下:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine; public class ToolShu
{
/// <summary>
/// 阿拉伯数字转换中文汉字 数字大写
/// </summary>
public static string Rell(int input)
{
string ret = null;
int input2 = Math.Abs(input);
string resource = "零一二三四五六七八九";
string unit = "个十百千万亿兆京垓秭穰沟涧正载极";
if (input > Math.Pow(10, 4 * (unit.Length - unit.IndexOf('万'))))
{
throw new Exception("the input is too big,input:" + input);
}
Func<int, List<List<int>>> splitNumFunc = (val) => {
int i = 0;
int mod;
int val_ = val;
List<List<int>> splits = new List<List<int>>();
List<int> splitNums;
do
{
mod = val_ % 10;
val_ /= 10;
if (i % 4 == 0)
{
splitNums = new List<int>();
splitNums.Add(mod);
if (splits.Count == 0)
{
splits.Add(splitNums);
}
else
{
splits.Insert(0, splitNums);
}
}
else
{
splitNums = splits[0];
splitNums.Insert(0, mod);
}
i++;
} while (val_ > 0);
return splits;
};
Func<List<List<int>>, string> hommizationFunc = (data) => {
List<StringBuilder> builders = new List<StringBuilder>();
for (int i = 0; i < data.Count; i++)
{
List<int> data2 = data[i];
StringBuilder newVal = new StringBuilder();
for (int j = 0; j < data2.Count;)
{
if (data2[j] == 0)
{
int k = j + 1;
for (; k < data2.Count && data2[k] == 0; k++) ;
//个位不是0,前面补一个零
newVal.Append('零');
j = k;
}
else
{
newVal.Append(resource[data2[j]]).Append(unit[data2.Count - 1 - j]);
j++;
}
}
if (newVal[newVal.Length - 1] == '零' && newVal.Length > 1)
{
newVal.Remove(newVal.Length - 1, 1);
}
else if (newVal[newVal.Length - 1] == '个')
{
newVal.Remove(newVal.Length - 1, 1);
} if (i == 0 && newVal.Length > 1 && newVal[0] == '一' && newVal[1] == '十')
{//一十 --> 十
newVal.Remove(0, 1);
}
builders.Add(newVal);
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < builders.Count; i++)
{//拼接
if (builders.Count == 1)
{//个位数
sb.Append(builders[i]);
}
else
{
if (i == builders.Count - 1)
{//万位以下的
if (builders[i][builders[i].Length - 1] != '零')
{//十位以上的不拼接"零"
sb.Append(builders[i]);
}
}
else
{//万位以上的
if (builders[i][0] != '零')
{//零万零亿之类的不拼接
sb.Append(builders[i]).Append(unit[unit.IndexOf('千') + builders.Count - 1 - i]);
}
}
}
}
return sb.ToString();
};
List<List<int>> ret_split = splitNumFunc(input2);
ret = hommizationFunc(ret_split);
if (input < 0) ret = "-" + ret;
return ret;
}
/// <summary>
/// 转成钱好像也是可以的 阿拉伯数字转成中文大写
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static string Rel(int input)
{
string ret = null;
int input2 = Math.Abs(input);
string resource = "零壹贰叁肆伍陆柒捌玖";
string unit = "个十百千万亿兆京垓秭穰沟涧正载极";
if (input > Math.Pow(10, 4 * (unit.Length - unit.IndexOf('万'))))
{
throw new Exception("the input is too big,input:" + input);
}
Func<int, List<List<int>>> splitNumFunc = (val) => {
int i = 0;
int mod;
int val_ = val;
List<List<int>> splits = new List<List<int>>();
List<int> splitNums;
do
{
mod = val_ % 10;
val_ /= 10;
if (i % 4 == 0)
{
splitNums = new List<int>();
splitNums.Add(mod);
if (splits.Count == 0)
{
splits.Add(splitNums);
}
else
{
splits.Insert(0, splitNums);
}
}
else
{
splitNums = splits[0];
splitNums.Insert(0, mod);
}
i++;
} while (val_ > 0);
return splits;
};
Func<List<List<int>>, string> hommizationFunc = (data) => {
List<StringBuilder> builders = new List<StringBuilder>();
for (int i = 0; i < data.Count; i++)
{
List<int> data2 = data[i];
StringBuilder newVal = new StringBuilder();
for (int j = 0; j < data2.Count;)
{
if (data2[j] == 0)
{
int k = j + 1;
for (; k < data2.Count && data2[k] == 0; k++) ;
//个位不是0,前面补一个零
newVal.Append('零');
j = k;
}
else
{
newVal.Append(resource[data2[j]]).Append(unit[data2.Count - 1 - j]);
j++;
}
}
if (newVal[newVal.Length - 1] == '零' && newVal.Length > 1)
{
newVal.Remove(newVal.Length - 1, 1);
}
else if (newVal[newVal.Length - 1] == '个')
{
newVal.Remove(newVal.Length - 1, 1);
} if (i == 0 && newVal.Length > 1 && newVal[0] == '一' && newVal[1] == '十')
{//一十 --> 十
newVal.Remove(0, 1);
}
builders.Add(newVal);
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < builders.Count; i++)
{//拼接
if (builders.Count == 1)
{//个位数
sb.Append(builders[i]);
}
else
{
if (i == builders.Count - 1)
{//万位以下的
if (builders[i][builders[i].Length - 1] != '零')
{//十位以上的不拼接"零"
sb.Append(builders[i]);
}
}
else
{//万位以上的
if (builders[i][0] != '零')
{//零万零亿之类的不拼接
sb.Append(builders[i]).Append(unit[unit.IndexOf('千') + builders.Count - 1 - i]);
}
}
}
}
return sb.ToString();
};
List<List<int>> ret_split = splitNumFunc(input2);
ret = hommizationFunc(ret_split);
if (input < 0) ret = "-" + ret;
return ret;
}
}

代码工具

具体用法:ToolShu.Rell(10086);

unity 阿拉伯数字转中文汉字的更多相关文章

  1. C# 阿拉伯数字转换为中文数字/中文数字转换为阿拉伯数字

    项目中经常会格式化数据,转换数字的使用情况比较多,记录一下数字转换的方法! 如果需要转换为繁体中文,将数组里的汉字换成繁体中文即可. 1.阿拉伯数字转换为中文数字 /// <summary> ...

  2. php使用strlen()判断中文汉字字符串长度

    php使用strlen()判断中文汉字字符串长度 对于含有中文情况,此时可以采用: iconv_strlen($str,"UTF-8"); iconv_strlen 是无论是何种编 ...

  3. Oracle一个中文汉字占用几个字节

    Oracle 一个中文汉字 占用几个字节,要根据Oracle中字符集编码决定   查看oracle server端字符集 select userenv('language') from dual; 如 ...

  4. char 型变量中能不能存贮一个中文汉字,为什么?

    char类型可以存储一个中文汉字,因为Java中使用的编码是Unicode(不选择任何特定的编码,直接使用字符在字符集中的编号,这是统一的唯一方法),一个char类型占2个字节(16比特),所以放一个 ...

  5. ASP.NET开发在JavaScript有中文汉字时出现乱码时简单有效的解决

    一般情况在使用ASP.NET开发使用JavaScript有中文汉字时不会出现乱码情况,比如:alert('您看到我了吗?');这样直接输入中文汉字的代码中是不会出现乱码的,如果出现了,一是检查Web. ...

  6. Oracle-一个中文汉字占几个字节?

    Oracle 一个中文汉字占用几个字节 Oracle 一个中文汉字 占用几个字节,要根据Oracle中字符集编码决定!!! 1. 如果定义为VARCHAR2(32 CHAR),那么该列最多就可以存储3 ...

  7. 用Python递归解决阿拉伯数字转为中文财务数字格式的问题(2)--打开思路的一种方法

    几天前自己写了个将阿拉伯数字转为中文财务数字的程序.用的递归,不幸的是它是树形递归. 虽然实际过程中不太可能出现金额数字大到让Python递归栈溢出,但是始终是一块心病,这玩意终究在理论上是受限制的. ...

  8. 【.net】在ASP.NET中,IE与Firefox下载文件名中带中文汉字的文件,文件名乱码的问题

    #问题:客户端为ie或Firefox,服务端为asp.net时,下载文件名中包含中文汉字时,下载下来的文件的文件名是乱码: #解决方案: 示例代码:下载名称中带汉字的文件: public void P ...

  9. uniGUI中Cookies使用中文汉字的方法(使用EncodeString函数编码)

    uniGUI中Cookies使用中文汉字的方法(使用EncodeString函数编码)   在目前的UniGUI(ver:0.88)中使用UniApplication.Cookies.SetCooki ...

  10. Javascript阿拉伯数字转中文

    Javascript阿拉伯数字转中文 template.helper('_toChinese', function (number) { /* * 单位 */ var units = '个十百千万@# ...

随机推荐

  1. 静态代码块-数组工具类Arrays

    静态代码块 静态代码块: 定义在成员位置,使用static修饰的代码块{}. 位置:类中方法外. 执行:随着类的加载而执行且执行一次,优先于main方法和构造方法的执行 格式: public clas ...

  2. Unity_UIWidgets新手入门

    Unity_UIWidgets新手入门 Hello Everyone!好久没见了,有没有有些想念小黑呢?什么?这么想?哈哈哈哈哈哈,不过我也知道你是想了解新的知识了,才不是想我嘞. 好了,好歹也半年没 ...

  3. 同时打开多个.exe文件怎么解决

    同时打开多个.exe文件怎么解决 小黑最近遇到一个问题,就是Unity封装好用来直接打开.exe的函数不好用了!! 怎么解决? 于是发现了.bat文件!好用至极啊 前提 小黑是征求过客户同意之后才这么 ...

  4. *已解决 java写的简单验证码Servlet实践

    目的:java写的简单验证码Servlet实践 总结项目中遇到的问题 提供遇到同样问题的一些(菜鸟的)思路 (代码在最后~) 项目参考:https://www.itdaan.com/blog/2018 ...

  5. Elasticsearch Mapping类型修改

    背景 通常数据库进行分库分表后,目前比较常规的作法,是通过将数据异构到Elasticsearch来提供分页列表查询服务:在创建Elasticsearch索引时,基本都是会参考目前的业务需求.关系数据库 ...

  6. 数值的扩展方法以及新增数据类型BigInt

    二进制和八进制表示法 ES6提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o或(0O)表示 0b111110111 === 503 // true; 0o767 === 503; / ...

  7. Powershell删除文本指定内容所在行以下内容

    需求:批量获取文本指定内容所在行以下内容(含当前行) 解决方案:使用Powershell脚本处理 案例: 获取当前文件夹下所有txt文件 含文本"4"所在行以下内容(含当前行) 如 ...

  8. 在windows环境中如何批量添加IP地址 and 求助 : 在CMD命令行中配置IP地址, 提示 : 未能配置DHCP服务, 接口可能已经断开, 系统找不到指定的文件.

    转载csdn: 在windows环境中如何批量添加IP地址_user_yuewu的博客-CSDN博客_windows批量添加ip 求助 : 在CMD命令行中配置IP地址, 提示 : 未能配置DHCP服 ...

  9. grafana展示的CPU利用率与实际不符的问题探究

    问题描述 最近看了一个虚机的CPU使用情况,使用mpstat -P ALL命令查看系统的CPU情况(该系统只有一个CPU core),发现该CPU的%usr长期维持在70%左右,且%sys也长期维持在 ...

  10. RA维持期达标式减停生物制剂(DRESS研究)的18个月数据

    标签:类风湿关节炎; TNF抑制剂; 达标式减停药物 RA维持期达标式减停生物制剂(DRESS研究): 18个月临床疗效与继续足量应用者相仿 电邮发布日期: 2016-01-14 由于缺乏对常规诊疗有 ...