直接调用即可
代码如下:
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);
标签:Count,中文,int,阿拉伯数字,List,Length,newVal,unity,builders From: https://www.cnblogs.com/qq2351194611/p/17162668.html