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

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 judgeChineseData(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;

}

2

0

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2014-02-20 17:14

浏览 5791

评论

Java中可以通过递归或循环的方式,将阿拉伯数字转化为中文数字。以下是一个示例代码: ```java public class NumberToChinese { private static final String[] CN_NUM = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"}; private static final String[] CN_UNIT = {"", "十", "百", "千", "万", "亿"}; public static String numberToChinese(int num) { if (num == 0) { return CN_NUM[0]; } StringBuilder sb = new StringBuilder(); int unitIndex = 0; boolean needZero = false; while (num > 0) { int digit = num % 10; if (digit == 0) { if (needZero) { sb.insert(0, CN_NUM[digit]); } needZero = false; } else { sb.insert(0, CN_NUM[digit] + CN_UNIT[unitIndex]); needZero = true; } unitIndex++; num /= 10; } return sb.toString(); } } ``` 这个示例代码中,CN_NUM数组是中文数字0到9的字符串数组,CN_UNIT数组是中文数字单位的字符串数组。numberToChinese方法接受一个int类型的数字,返回将该数字转化为中文数字的字符串。 在numberToChinese方法中,首先进行特判,如果数字为0,则直接返回“零”。然后通过循环将数字的每一位转化成对应的中文数字和单位,并将它们拼接在一起。如果某一位的数字为0,则不需要将其对应的中文数字加入结果中,但是需要在后面的数字中加上一个“零”的字符串。最后返回拼接好的结果字符串。 示例代码中用到了StringBuilder类,它是Java中用来处理字符串拼接的高效工具类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值