java汉字数字转换成阿拉伯数字ITeye - 威尼斯人

java汉字数字转换成阿拉伯数字ITeye

2019年03月05日14时38分13秒 | 作者: 景行 | 标签: 数字,汉字,时分 | 浏览: 337

  今日做一个日期转化的时分发现有些时刻是用大写汉字写成的,需求转化成相应的数字值才干运用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(unitValue0){
  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(unitValue0){
 unitValue=1;
 sumNum+=unitValue*temp;
 unitValue=0;
 break;
 case 10:
 if(unitValue0){
 unitValue=1;
 sumNum+=unitValue*temp;
 unitValue=0;
 break;
 default:
 unitValue+=temp;
 break;
 sumNum+= unitValue;
 return sumNum;
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表威尼斯人立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1
  • 2

    Java多线程编程ITeye

    线程,音讯,出产
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

    FileDowloadITeye

    途径,获取,绝对
  • 10

    java FTPClient的运用ITeye

    服务器,文件,运用