中文汉字数字转罗马数字方法
public static class ForChinese{static readonly Regex _nRegex = new Regex(@"[零一二三四五六七八九]+");static readonly Regex _pRegex = new Regex(@"[十百千万亿]+");static readonly Dictionary<char, int> _numDict = new Dictionary<char, int>{{ '零', 0 },{ '一', 1 },{ '二', 2 },{ '三', 3 },{ '四', 4 },{ '五', 5 },{ '六', 6 },{ '七', 7 },{ '八', 8 },{ '九', 9 }};static readonly Dictionary<char, double> _postDict = new Dictionary<char, double>{{ '十', Math.Pow(10,1) },{ '百', Math.Pow(10,2) },{ '千', Math.Pow(10,3) },{ '万', Math.Pow(10,4) },{ '亿', Math.Pow(10,8) }};public static int TransNum(string num){return string.IsNullOrEmpty(num) ? 0 : _numDict[num.Last()];}public static double TransPost(string post){return post.Aggregate<char, double>(1, (current, p) => current * _postDict[p]);}public static double ChineseToRomanNumerals(string cn){var split = cn.Split('万', '亿');double sum = 0;for (var i = 0; i < split.Length; i++){var sp = split[i];var str = sp;double numSum = 0;while (str.Length > 0){// 处理数字var nStr = _nRegex.Match(str).Value;var n = TransNum(nStr);// 处理数位var pStr = _pRegex.Match(str).Value;var p = TransPost(pStr);// 添加数字numSum += (n == 0 ? 1 : n) * p;// 循环var numPost = string.Concat(nStr, pStr);str = str.Substring(numPost.Length);}var pow = split.Length - i - 1;var post = Math.Pow(10000, pow);sum += numSum * post;}return sum;}}
中文汉字数字转罗马数字方法相关推荐
- java 数字转换成汉字_Java-String-阿拉伯数字转换成中文汉字数字
package com.test; public class NumberUtils { private static final String[] UNITS = { "", & ...
- python2 正则匹配中文汉字数字字母
python2 re.compile匹配中文数字字母: # -*- coding: utf-8 -*- import redef chineseToUnic(ch):# 中文字符串转unicode编码 ...
- Java获取中文汉字拼音首字母方法二
效果如下 岐山县 qishanxian QSX Java代码 import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge. ...
- Java获取中文汉字拼音首字母方法一(更快速)
实现效果 文字内容:小苹果 拼音首字母:xpg 工具类 import java.io.UnsupportedEncodingException;/*** @author yang* @version ...
- 关于 jsp java servlet 中文汉字乱码的解决方法
在servlet类中的get,post最前面加上 req.setCharacterEncoding("UTF-8"); resp.setCharacterEncoding(&quo ...
- 数字转换成中文汉字数字
1 class Student { 2 static String[] ss = new String[]{"零", "壹", "贰", & ...
- JAVA 中文汉字转换阿拉伯数字(最终版,已修复了亿及亿以下的汉数字的转换,超过后的数字,暂时不支持)
嘎嘎嘎,大写的尴尬,非常感谢Eliauk_cc-May反馈的bug,代码重新修改啦,鉴于之前过于复杂的逻辑,本次进行了简化 //判断是否为中文数字字符public static List<Str ...
- 枚举中文转数字并easyexcel导入(读取Read)数据至数据库,用监听器解决导入关联多表的问题
以下内容皆为本人学习过程中的所学的知识,全根据自己所学思路来写的. 大致流程如下: 一.创建实体类,注意有一个是导入的模板实体模型类(CustomManageAndCustomerInformatio ...
- oracle排序非英文最后,Oracle中中文、数字,英文混杂形式的字段进行排序的方法...
http://blog.csdn.net/p451933505/article/details/9272257 对Oracle中中文.数字.英文混杂形式的字段进行排序的方法: 例如: order by ...
最新文章
- AAAI 2021 | 情感分析最新进展解读
- Windows Server Backup 备份活动目录
- 针对大表 设计高效的存储过程【原理篇】 附最差性能sql语句进化过程客串
- 2019年末逆向复习系列之Boss直聘Cookie加密字段__zp_stoken__逆向分析
- HC-05蓝牙模块基本使用
- 给 TWebBrowser.Document 定义事件
- 让你受用一辈子的一条CMD命令
- RabbitMQ基本管理(下)
- opencv-api morphologyEx
- UIWindow创建局部弹框
- LeetCode(961)——重复 N 次的元素(JavaScript)
- 成功送小米上市的米粉们,反被 P2P 爆雷炸成了灰!
- IIS 7.0 SSL 部署指南
- 增值税发票税控开票软件数据接口规范
- 3DMAx:能导入导出的文件格式
- quartz 整合 postgresql 附带例子
- (转载)反垃圾邮件技术解析
- 腾讯云数据迁移工具解决方案:华为云迁移到腾讯云
- Ubuntu 下查看图片
- 电压放大倍数公式运放_运放电路放大倍数的计算