求助.关于大写数字转阿拉伯问题
时间:2011-12-11
来源:互联网
C# code
这个能处理成功,但是当字符不存在 十百千万的时候就只能读到最后一个数字,。。。 调试了半天也不知道怎么回事..
如:字符是"三十八"能正常转换为"38" ,但是如果是"三八"处理后的结果是"8"
求指教
public string UperNumberToLower(string srcStr) { srcStr = Regex.Replace(srcStr, @"(?<![零一二三四五六七八九])十", "一十"); srcStr = Regex.Replace(srcStr, @"十(?![零一二三四五六七八九])", "十零"); return Regex.Replace(srcStr, @"(?![千百])[零一二三四五六七八九十百千万]+", new MatchEvaluator(UpToLowerDelegate)); } public string UpToLowerDelegate(Match m) { string uNumber = m.Value; int total = 0; int unit = -1; int standNum = -1; List<string> listNum = new List<string>(new string[] { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" }); List<string> listUnit = new List<string>(new string[] { "十", "百", "千","万" }); List<int> listInt = new List<int>(new int[] { 10, 100, 1000, 10000 }); for (int i = 0; i < uNumber.Length; i++) { string strChar = uNumber[i].ToString(); if (listNum.IndexOf(strChar) > -1) { standNum = listNum.IndexOf(strChar); } if (listUnit.IndexOf(strChar) > -1) { if (listUnit.IndexOf(strChar) < unit) { total = total + standNum * listInt[listUnit.IndexOf(strChar)]; } else { total = (total + standNum) * listInt[listUnit.IndexOf(strChar)]; unit = listUnit.IndexOf(strChar); } standNum = -1; } if (i == uNumber.Length - 1 && standNum != -1) { total = total + standNum; } } return total.ToString(); }
这个能处理成功,但是当字符不存在 十百千万的时候就只能读到最后一个数字,。。。 调试了半天也不知道怎么回事..
如:字符是"三十八"能正常转换为"38" ,但是如果是"三八"处理后的结果是"8"
求指教
作者: ckhker 发布时间: 2011-12-11
求指教啊
作者: ckhker 发布时间: 2011-12-11
没有单位的话,你中间计算total那块是不执行的。你转换的时候最好从个位开始转,判断有没有单位,没有的话根据所在位置看是第几位
作者: dreamboy0908 发布时间: 2011-12-12

作者: sunzongbao2007 发布时间: 2011-12-12
但是规矩要定好
作者: sunzongbao2007 发布时间: 2011-12-12
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28