java汉字数字转换成阿拉伯数字
今天做⼀个⽇期转换的时候发现有些时间是⽤⼤写汉字写成的,需要转换成相应的数字值才能使⽤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 (⽉份.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");
java switch case stringchineseMap.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()) {
up();
}
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.(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;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论