今天做一个日期转换的时候发现有些时间是用大写汉字写成的,需要转换成相应的数字值才能使用SimpleDateFormat进行格式刷。
问题描述:在月份和日的时候有十几、二十几、这样的数组出现如果直接转成相应的数组就会转成10X或者20X。
解决方法:写一个汉字对应数字的Map,当年份的时候直接在Map中取出对应数字即可,在月份和日的时候就单独写个方法解决。
方法思路:<伪码>
Map<String,String>chineseMap=new HashMap<String,String>();
chineseMap.put("一","1");
chineseMap.put("二","2");
chineseMap.put("三","3");
。
。
int sumNum=0;
int unitValue=0;//用于保存单位前的数字
for(int i=0;i<月份.length;i++){
int temp=chineseMap.get(月份.charAt(i)).toInt();
switch(temp){
case 10:
if(unitValue==0){
unitValue=1;//如果是十一月之类的,进来开始就是一个10
}
sumNum=+unitValue*temp;
unitValue=0;
case 100:
.
.
break;
default
unitValue+=temp;
break;
}
}
sumNum+=unitValue;
return sumNum;
代码:
问题描述:在月份和日的时候有十几、二十几、这样的数组出现如果直接转成相应的数组就会转成10X或者20X。
解决方法:写一个汉字对应数字的Map,当年份的时候直接在Map中取出对应数字即可,在月份和日的时候就单独写个方法解决。
方法思路:<伪码>
Map<String,String>chineseMap=new HashMap<String,String>();
chineseMap.put("一","1");
chineseMap.put("二","2");
chineseMap.put("三","3");
。
。
int sumNum=0;
int unitValue=0;//用于保存单位前的数字
for(int i=0;i<月份.length;i++){
int temp=chineseMap.get(月份.charAt(i)).toInt();
switch(temp){
case 10:
if(unitValue==0){
unitValue=1;//如果是十一月之类的,进来开始就是一个10
}
sumNum=+unitValue*temp;
unitValue=0;
case 100:
.
.
break;
default
unitValue+=temp;
break;
}
}
sumNum+=unitValue;
return sumNum;
代码:
private static final Map<String, String> chineseMap = new HashMap<String, String>(); private static final String yearReg="[一|二|三|四|五|六|七|八|九|十|〇|○]{4}年"; private static final String monthReg="(([十][一|二])|([一|二|三|四|五|六|七|八|九|十]))月"; private static final String dayReg="(([十][一|二|三|四|五|六|七|八|九])|(一|二|三|四|五|六|七|八|九|十)|([一|二|三][十][一|二|三|四|五|六|七|八|九]))日"; static{ chineseMap.put("一", "1"); chineseMap.put("元", "1"); chineseMap.put("二", "2"); chineseMap.put("三", "3"); chineseMap.put("四", "4"); chineseMap.put("五", "5"); chineseMap.put("六", "6"); chineseMap.put("七", "7"); chineseMap.put("八", "8"); chineseMap.put("九", "9"); chineseMap.put("〇", "0"); chineseMap.put("○", "0"); chineseMap.put("十", "10"); chineseMap.put("百", "100"); } protected String regMethod(Pattern pattern, String value) { Matcher ma = pattern.matcher(value); if (ma.find()) { return ma.group(); } return null; } private int judgeChineseData(String value){ int sumNum=0; int unitValue=0; for(int i=0;i<value.length()-1;i++){ char te=value.charAt(i); int temp=Integer.parseInt(chineseMap.get(String.valueOf(te))); switch (temp) { case 100: if(unitValue==0){ unitValue=1; } sumNum+=unitValue*temp; unitValue=0; break; case 10: if(unitValue==0){ unitValue=1; } sumNum+=unitValue*temp; unitValue=0; break; default: unitValue+=temp; break; } } sumNum+= unitValue; return sumNum; }
发表评论
-
java中线程池
2016-06-26 16:31 404最近在看线程池的类容,自己动手实现一个 package ... -
jvm常用设置
2015-09-08 22:48 428在我们实际工作中,可能会经常对JVM有一些设置,但是很多设置都 ... -
WebService相关
2015-07-26 21:55 1019之前由于工作需要 ... -
java RMI
2015-07-23 23:04 471JAVA RMI相关 分布 ... -
java jdbc 连接池
2015-07-21 00:18 520经常使用hibernate,在使用hibernate的时候经常 ... -
java 流传输压缩包
2015-07-14 23:14 627有的时候,页面上的下载文件是从后台使用流的形式下载来的,而不是 ... -
java 网络传输文件
2015-06-01 21:14 478package sterning; import java. ... -
java MD5加密
2015-03-30 14:41 337MD5是常用的加密算法,也经常用于校验信息完整,如文件的完整性 ... -
java 并发容器
2014-12-18 23:19 393在多线程的开发 ... -
java设计模式 之 builder模式
2014-12-11 22:19 453最近在看java设计模式,看到builder模式感觉十分不错, ... -
网上见到一篇compareTo文章较好,收藏之
2014-12-04 21:04 5871、compareTo(Object o)方法是jav ... -
Hibernate 和 spring 整合使用
2014-10-14 21:28 792在hibernate和spring时总结的一些知识,以供将来查 ... -
hiernate 集中管理session
2014-10-13 21:55 527问题: 使用hibern ... -
java写入txt文件
2014-05-22 23:10 1165File file = new File("d: ... -
POI读取excel
2014-05-22 23:05 948读取excel大概在java中有两种方法,选用apache的P ... -
定时器 quartz 和 spring
2014-04-17 23:30 524最近学习了一个quartz 和spring 的定时调度 这个 ... -
java 基于Struts2的 文件上传和下载
2014-04-03 22:56 572文件上传: 页面代码: <form action=' ... -
java IO
2014-03-23 23:23 453import java.io.BufferedReader ... -
自己写的一个JDBC工具类
2014-03-11 20:00 1208在最近的一段时间写毕业设计,由于本科阶段的毕业设计不是特别大的 ...
相关推荐
在Java编程语言中,将中文数字转换为阿拉伯数字是一个常见的需求,特别是在处理中文文本数据时。这个场景下,我们有一个名为“中文数字转成阿拉伯数字 java 实现”的压缩包,包含了一个实现此功能的Java包和一个单元...
java实现阿拉伯数字 转换为 汉字数字 算法
在编程领域,尤其是在Java开发中,有时我们需要将阿拉伯数字(1, 2, 3等)转换为中文的传统读法(如“一”,“二”,“三”)。这个任务涉及到字符串处理、数字转换以及对中文字符的理解。在本文中,我们将深入探讨...
Java 中实现数字金额到中文大写字符的转换是指将阿拉伯数字转换成中文大写的过程。本文将详细介绍 Java 实现数字金额到中文大写字符的转换的知识点。 知识点一: 数字金额到中文大写字符的转换的需求 在实际应用中...
根据提供的文件信息,可以看出这是一个Java程序,用于将阿拉伯数字转换为中文大写形式,并且能够处理包含小数点的情况。接下来我们将对这个程序的关键部分进行详细的解析与解释。 ### 核心知识点概述 1. **数据...
java编写的 阿拉伯数字转换成相应的人民币汉字类
在Android开发过程中,有时我们需要将阿拉伯数字(1, 2, 3...)转换成中文小写数字(一,二,三...),特别是在涉及到文化习惯或者用户界面本地化的时候,如书籍页码显示。这个任务涉及到字符串处理和字符映射,下面...
java阿拉伯数字转中文数字的重要性在于,它可以应用于各种需要将数字转换为中文的场景,例如在生成中文发票、中文报告、中文协议等文档时,需要将阿拉伯数字转换为中文数字。 java阿拉伯数字转中文数字的实现方法有...
在Java编程中,将阿拉伯数字转换为中国传统形式的金额表示是一项常见的需求,特别是在财务系统或者银行应用中。这种转换能够使数字更符合中国人的阅读习惯,增加可读性。在这个问题中,我们要处理的是将像...
java程序代码,阿拉伯数字转化为大写
在Java编程中,将阿拉伯数字转化为中文金额大写是一项常见的任务,特别是在财务系统或报表生成中。这个题目要求实现一个程序,能够读取输入的阿拉伯数字字符串,然后将其转换为符合中国会计规范的中文大写金额表示。...
在开发过程中,经常需要将阿拉伯数字转换为汉字数字,以便于更好地与中文环境集成。在本文中,我们将详细介绍Java实现阿拉伯数字转换为汉字数字的源代码,供大家参考。 首先,需要了解阿拉伯数字和汉字数字的基本...
将阿拉伯数字转化成汉字金钱 如1234.45转化为壹仟贰佰叁拾肆元肆角伍分
有些变态的报表需要把数字转换成英文输出,但愿这个能帮得到你 one hundred eighty-eight thousand, eight hundred one hundred eighty-eight thousand, eight hundred one one hundred eighty-eight thousand, ...
在许多应用程序中,为了方便计算或标准化数据,我们需要将中文数字转换成阿拉伯数字。下面将详细介绍这一转换过程以及相关的技术知识。 1. **基础概念**: - **中文数字**:以汉字表示的数字,如“一”代表1,“二...
下面是一个简单的Java代码示例,演示了如何将中文数字字符串转换成阿拉伯数字: ```java public class ChineseToNumber { private static final String[] CHINESE_DIGITS = {"零", "一", "二", "三", "四", "五", ...
Java 实现数字转换人民币中文大写工具 Java 实现数字转换人民币中文大写工具是指使用 Java 语言将数字转换为人民币中文大写格式的工具。该工具具有很高的实用价值,特别是在人事业务系统开发中,经常需要将数字转换...
8. 编程实践:我们通过实践了解了如何使用Java语言将阿拉伯数字转换为中文大写数字,并掌握了编程的基本技术和方法。 通过这个示例代码,我们掌握了阿拉伯数字转换为中文大写的技术和方法,并了解了编程语言基础和...
Java 中使用堆栈实现阿拉伯数字到汉字的转换 在 Java 中,我们可以使用堆栈实现用户输入的阿拉伯数字到汉字的转换。这种方法可以利用 Java.util 包中的堆栈 Stack 来实现。 首先,我们需要了解阿拉伯数字到汉字的...
一种阿拉伯数字(含小数部分)转中文汉字的算法,例如通过键盘输入 123011221.1201,则输出 一亿二千三百零一万一千二百二十一点一二零一(或 壹亿贰仟叁佰零壹万壹仟贰佰贰拾壹点壹贰零壹)。