今天做一个日期转换的时候发现有些时间是用大写汉字写成的,需要转换成相应的数字值才能使用SimpleDateFormat进行格式刷。

问题描述:在月份和日的时候有十几、二十几、这样的数组出现如果直接转成相应的数组就会转成10X或者20X。

解决方法:写一个汉字对应数字的Map,当年份的时候直接在Map中取出对应数字即可,在月份和日的时候就单独写个方法解决。

方法思路:

MapchineseMap=new HashMap();

chineseMap.put("一","1");

chineseMap.put("二","2");

chineseMap.put("三","3");

int sumNum=0;

int unitValue=0;//用于保存单位前的数字

for(int i=0;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 chineseMap = new HashMap();

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 judgeChineseDate(String value){

int sumNum=0;

int unitValue=0;

for(int i=0;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;

}

/**

* 处理时间使其能格式化

* @param value

* @return

*/

private String judgeTime(String value){

Pattern pattern=pile(yearReg);

Pattern monthPattern=pile(monthReg);

Pattern dayPattern=pile(dayReg);

String iyear="";

String imonth="";

String iday="";

String year=regMethod(pattern, value);

if(year!=null){

for(char ch:year.toCharArray()){

String ivalue=chineseMap.get(String.valueOf(ch));

if(ivalue!=null){

iyear+=ivalue;

}

}

}

String mon=regMethod(monthPattern,value);

if(mon!=null){

imonth=String.valueOf(judgeChineseDate(mon));

}

String day=regMethod(dayPattern, value);

if(day!=null){

iday=String.valueOf(judgeChineseDate(day));

}

if(year!=null&&mon!=null&&day!=null){

value=iyear+"-"+imonth+"-"+iday;

}

return value;

java 转成数字,java汉字转成数字相关推荐

  1. java 中文替换_java字符串汉字替换成拼音

    String str ="jhuywy48r在74yhf47tf6中7dgc782有3y..."; 后面还有几百个汉字 汉字的个数不确定 我想把里面所有的 汉字 换成对应的 拼音 ...

  2. php将数字转换为汉字_php 把数字转换成汉字的代码

    直接上实例,写到 千亿上了. /** * @author ja颂 * 把数字1-1亿换成汉字表述,如:123->一百二十三 * @param [num] $num [数字] * @return ...

  3. python数字转汉字-Python转换数字到中文大写格式

    今天有人在群里问到Python怎么把小写数字转换成中文的大写字符,觉得这个问题很有趣,于是想了一下,就开始写代码了. 以下是代码,感觉不足的地方就是如果是1001元,那么就会转换成 壹仟零佰零拾壹圆, ...

  4. 汉字转化成拼音的源代码

    1using System;   2using System.Collections;   3using System.Text;   4namespace JJBase.String   5{   ...

  5. Excel中,把数字和汉字分开的方法

    Excel中,把数字和汉字分开的方法,此博客主要分享2种情况 1.数字在汉字前面 获取数字公式:=LEFT(A1,2*LEN(A1)-LENB(A1)) 获取汉字公式:=RIGHT(A1,LENB(A ...

  6. java如何把汉字转换成机内码_java语言如何将汉字转化成五笔

    java语言如何将汉字转化成五笔 [2021-01-31 08:32:59]  简介: php将汉字转ascii的方法:首先创建一个php示例文件:然后通过封装好的"public funct ...

  7. java 汉字转拼音原理_Java汉字转成汉语拼音工具类

    Java汉字转成汉语拼音工具类,需要用到pinyin4j.jar包. import net.sourceforge.pinyin4j.PinyinHelper; import net.sourcefo ...

  8. java导出excel 科学计数法_基于Java将Excel科学计数法解析成数字

    需要注意的是一般的科学表达式是 1.8E12 1.8E-12 而在Excel中的科学表达式是 1.8E+12 1.8E-12 我写的科学计数法的正则表达式是 (-?\d+\.?\d*)[Ee]{1}[ ...

  9. 【算法java版01】:键盘录入一个字符串,将字符串中的大写改成小写,小写改成大写,数字改成*

    键盘录入一个字符串,将字符串中的大写改成小写,小写改成大写,数字改成 * 一.题目描述 二.解题思路 三.代码示例 四.测评结果 一.题目描述 键盘录入一个字符串,将字符串中的大写改成小写,小写改成大 ...

最新文章

  1. WPF编游戏系列 之四 用户控件
  2. redis 查看key的有效期_你经常忽略的Redis常见面试题,精选给你整理
  3. python编程输入图形_python编程,输入一个字符,用该字符输出一下图形,是一个数字6,用*表示6...
  4. 【Git笔记2】必知习惯和如何版本回退
  5. 数据结构:排序算法之交换排序(冒泡排序、快速排序)
  6. C ++中的std :: binary_search()
  7. Python collections模块总结
  8. Redis入门到入土教程_2 远程连接redis
  9. 阿里图标库使用(在线使用)
  10. linux下nginx重启命令
  11. windows文件夹正在使用
  12. 【DFS 水洼数目】
  13. each 和 forEach 和{{each}}
  14. 零输入响应和零状态响应
  15. 紫色特别舒服的UI趣味测试微信小程序源码下载包含多种评测
  16. 支付开发(七)----支付宝开发之手机网站支付(H5支付)
  17. SCI论文回复审稿人意见
  18. 计算机网络思维导图+《王道考研》习题总结
  19. 电商商城之分类实现(重点)
  20. 用SnowNLP().sentiments报错

热门文章

  1. 润盈益通保本型理财产品优势
  2. HTML和CSS中如何判断ie各版本浏览器
  3. 2022网鼎杯青龙组wp
  4. Python 3语法小记(四)字典 dictionary
  5. 好用的免费代理池搭建
  6. 《详细》使用ventoy制作linux to go和win to go放在u盘中《即走即用的便携式系统》,自带系统引导
  7. 汉语拼音工具包相关实用方法
  8. 语音备忘录里的录音怎么导出来
  9. python发红包(转载)
  10. win10计算机网络设置在哪,Win10系统电脑中的网络状态在哪里查看