用于将阿拉伯数字转成中文数字
来源:互联网 发布:java源码分析工具 编辑:程序博客网 时间:2024/04/30 07:02
public class Num2Cn { #region private Datas static readonly string[] cnStr = new string[] { "千", "百", "十", "" }; static readonly string[] numStr = new string[] { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" }; static bool ZeroBefore; #endregion #region The only public method,if valid,return the result,else return the ErrorMessage public static string ConvertToZhCN(string num) { //init ZeroBefore = false; /////////////////// num = filter(num); if (!IsValid(num)) return "输入值不是数字或大于18位"; return Translate(num, 0); } #endregion #region CheckMethods,just to check if the input is valid or not static bool IsValid(string num) { if (num.Length > 18) return false; for (int i = 0; i < num.Length; i++) { if (num[i] < '0' || num[i] > '9') return false; } return true; } static string filter(string input) { for (int i = 0; i < input.Length; i++) { if (input[i] != '0') return input.Substring(i); } return "0"; } #endregion #region Translation Methods static string MapCnStr(char input) { int x = Convert.ToInt32(input); return numStr[x - 48]; } static string Translate(string input, int layer) { switch (layer) { case 0: if (input.Length > 4) return Translate(input.Remove(input.Length - 4), layer + 1) + "万" + TranslateUnit(input.Substring(input.Length - 4)); else return TranslateUnit(input); case 1: if (input.Length > 4) return Translate(input.Remove(input.Length - 4), layer + 1) + "亿" + Translate(input.Substring(input.Length - 4), layer - 1); else return Translate(input, layer - 1); case 2: if (input.Length > 8) return Translate(input.Remove(input.Length - 8), layer + 1) + "兆" + Translate(input.Substring(input.Length - 8), layer - 1); else return Translate(input, layer - 1); default: return ""; } } static string TranslateUnit(string input) { StringBuilder sb = new StringBuilder(); int offset = 4 - input.Length; for (int i = 0; i < input.Length; i++) { if (input[i] == '0') { if (ZeroBefore) continue; else { ZeroBefore = true; sb.Append(MapCnStr(input[i])); } } else { ZeroBefore = false; sb.Append(MapCnStr(input[i]) + cnStr[i + offset]); } } if (sb[sb.Length - 1] == '零' && sb.Length > 1) sb.Remove(sb.Length - 1, 1); //edit by lxj 2012-09-25 10,11去掉前面的一,成十,十一 if (sb.Length >= 2) { if (sb[0] == '一' && sb[1] == '十') { sb.Remove(0, 1); } } return sb.ToString(); } #endregion }
调用:Num2Cn.ConvertToZhCN("1");
0 0
- 用于将阿拉伯数字转成中文数字
- [经典]将阿拉伯数字转成中文数字字串和将中文字串转成拉伯数字
- java阿拉伯数字转成中文数字
- 把中文表示的数字转成阿拉伯数字
- 将中文数字转为阿拉伯数字
- 将阿拉伯数字转成中文发票写法。
- 将中文数字转换成阿拉伯数字
- 将阿拉伯数字转换为中文数字
- java将阿拉伯数字转换为中文数字
- java将阿拉伯数字转换为中文数字
- java将中文数字替换为阿拉伯数字
- IOS,将阿拉伯数字转换为中文数字
- 阿拉伯数字转成中文大写
- 将阿拉伯数字转成中文字
- 阿拉伯数字转为中文数字
- 阿拉伯数字转中文数字
- 【iOS开发系列】将阿拉伯数字转换为中文数字
- delphi下将中文数字转换为阿拉伯数字
- iOS应用中如何跳转至App Store指定应用
- 混淆矩阵
- LeetCode 107 Binary Tree Level Order Traversal II(二叉树的层级顺序遍历2)(*)
- Android开发笔记--操纵字符串中的字符
- xampp中production的php.ini与默认的有何不同
- 用于将阿拉伯数字转成中文数字
- win8.1 Offline Files、Device Association Service和Network Connections
- 选择角点
- Apple 一个我越发看不懂的公司
- 【java web】--ojdbc导入xml数据
- listview适配器的初级优化
- Android开发笔记--Dialog提示框
- android studio for mac Cannot run program Permission denied
- android studio 预览布局文件错误