java 转成数字,java汉字转成数字
今天做一个日期转换的时候发现有些时间是用大写汉字写成的,需要转换成相应的数字值才能使用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汉字转成数字相关推荐
- java 中文替换_java字符串汉字替换成拼音
String str ="jhuywy48r在74yhf47tf6中7dgc782有3y..."; 后面还有几百个汉字 汉字的个数不确定 我想把里面所有的 汉字 换成对应的 拼音 ...
- php将数字转换为汉字_php 把数字转换成汉字的代码
直接上实例,写到 千亿上了. /** * @author ja颂 * 把数字1-1亿换成汉字表述,如:123->一百二十三 * @param [num] $num [数字] * @return ...
- python数字转汉字-Python转换数字到中文大写格式
今天有人在群里问到Python怎么把小写数字转换成中文的大写字符,觉得这个问题很有趣,于是想了一下,就开始写代码了. 以下是代码,感觉不足的地方就是如果是1001元,那么就会转换成 壹仟零佰零拾壹圆, ...
- 汉字转化成拼音的源代码
1using System; 2using System.Collections; 3using System.Text; 4namespace JJBase.String 5{ ...
- Excel中,把数字和汉字分开的方法
Excel中,把数字和汉字分开的方法,此博客主要分享2种情况 1.数字在汉字前面 获取数字公式:=LEFT(A1,2*LEN(A1)-LENB(A1)) 获取汉字公式:=RIGHT(A1,LENB(A ...
- java如何把汉字转换成机内码_java语言如何将汉字转化成五笔
java语言如何将汉字转化成五笔 [2021-01-31 08:32:59] 简介: php将汉字转ascii的方法:首先创建一个php示例文件:然后通过封装好的"public funct ...
- java 汉字转拼音原理_Java汉字转成汉语拼音工具类
Java汉字转成汉语拼音工具类,需要用到pinyin4j.jar包. import net.sourceforge.pinyin4j.PinyinHelper; import net.sourcefo ...
- java导出excel 科学计数法_基于Java将Excel科学计数法解析成数字
需要注意的是一般的科学表达式是 1.8E12 1.8E-12 而在Excel中的科学表达式是 1.8E+12 1.8E-12 我写的科学计数法的正则表达式是 (-?\d+\.?\d*)[Ee]{1}[ ...
- 【算法java版01】:键盘录入一个字符串,将字符串中的大写改成小写,小写改成大写,数字改成*
键盘录入一个字符串,将字符串中的大写改成小写,小写改成大写,数字改成 * 一.题目描述 二.解题思路 三.代码示例 四.测评结果 一.题目描述 键盘录入一个字符串,将字符串中的大写改成小写,小写改成大 ...
最新文章
- WPF编游戏系列 之四 用户控件
- redis 查看key的有效期_你经常忽略的Redis常见面试题,精选给你整理
- python编程输入图形_python编程,输入一个字符,用该字符输出一下图形,是一个数字6,用*表示6...
- 【Git笔记2】必知习惯和如何版本回退
- 数据结构:排序算法之交换排序(冒泡排序、快速排序)
- C ++中的std :: binary_search()
- Python collections模块总结
- Redis入门到入土教程_2 远程连接redis
- 阿里图标库使用(在线使用)
- linux下nginx重启命令
- windows文件夹正在使用
- 【DFS 水洼数目】
- each 和 forEach 和{{each}}
- 零输入响应和零状态响应
- 紫色特别舒服的UI趣味测试微信小程序源码下载包含多种评测
- 支付开发(七)----支付宝开发之手机网站支付(H5支付)
- SCI论文回复审稿人意见
- 计算机网络思维导图+《王道考研》习题总结
- 电商商城之分类实现(重点)
- 用SnowNLP().sentiments报错