java汉字数字转换成阿拉伯数字
2014-02-20 17:14
323 查看
今天做一个日期转换的时候发现有些时间是用大写汉字写成的,需要转换成相应的数字值才能使用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编写的汉字版数字转换为阿拉伯数字
- java实现 阿拉伯数字转换为汉字数字 算法
- java实现 阿拉伯数字转换为汉字数字
- Java-String-阿拉伯数字转换成中文汉字数字
- java实现 阿拉伯数字转换为汉字数字 算法
- java实现 阿拉伯数字转换为汉字数字 算法
- java实现阿拉伯数字转换为汉字数字源代码
- java实现 阿拉伯数字转换为汉字数字 算法
- 将汉字数字转换成阿拉伯数字
- 人民币大小写转换(阿拉伯数字和汉字转换)
- 在java中,将阿拉伯数字转换成大写
- java实现中文数字与阿拉伯数字互相转换
- 将输入的阿拉伯数字转换的汉字的大写输出
- java将阿拉伯数字转换为中文
- 用java代码将阿拉伯数字金额转换成中文大写
- 人民币大小写转换(阿拉伯数字和汉字转换)
- java 中大写数字与阿拉伯数之间的相互转换
- JAVA 阿拉伯数字转换成罗马字符序号和ASCII码表
- 阿拉伯数字大小写转换java工具
- java数字金额转换成汉字大写