用java把阿拉伯数字转换成中文数字,怎么做

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用java把阿拉伯数字转换成中文数字,怎么做相关的知识,希望对你有一定的参考价值。

有个简单的转换,支持10亿以内

public class Test
    public static void test(int d)
//        String[] str = "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" ;
        String[] str = "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" ;
//        String ss[] = new String[] "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿" ;
        String ss[] = new String[] "个", "十", "百", "千", "万", "十", "百", "千", "亿" ;
        String s = String.valueOf(d);
        System.out.println(s);
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < s.length(); i++)
            String index = String.valueOf(s.charAt(i));
            sb = sb.append(str[Integer.parseInt(index)]);
        
        String sss = String.valueOf(sb);
        int i = 0;
        for (int j = sss.length(); j > 0; j--)
            sb = sb.insert(j, ss[i++]);
        
        System.out.println(sb);
    

    public static void main(String[] args)
        test(3213);
        test(912321321);
    


结果

不想要“个”的话就把 ss[] 数组中的“个”改成空

不过毕竟是机械的转换,有零的话不太符合语言习惯

参考技术A 设两个数组,第一个数组放数字,第二个放中文,
传入一个数字,到数字数组中取出下标,拿着这个下标去中文数组中去出对应的值,就是
中文字,这不就转换了。
HashMap,也可以。key=0,value=零,
map.get(key,value)
参考技术B 什么叫中文数字,是不是变成字符串??
String s2=Integer.toString(v);
参考技术C 正则表达式替换即可

java 如何判断字符串是不是可以转换成数字

try
String str="123abc";
int num=Integer.valueOf(str);//把字符串强制转换为数字
return true;//如果是数字,返回True
catch (Exception e)
return false;//如果抛出异常,返回False
参考技术A

    用JAVA自带的函数判断,其中Character.isDigit方法:确定或判断指定字符是否是一个数字。

    public static boolean isNumericZidai(String str)      

    for (int i = 0; i < str.length(); i++)

    System.out.println(str.charAt(i));

    if (!Character.isDigit(str.charAt(i)))      

    return false;

     

    return true;

    正确的通用代码(传入包含中文、负数、位数很长的数字的字符串也能正常匹配):

    /**

    * 匹配是否包含数字

    * @param str 可能为中文,也可能是-19162431.1254,不使用BigDecimal的话,变成-1.91624311254E7

    * @return

    * @author yutao

    * @date 2016年11月14日下午7:41:22

    */

    public static boolean isNumeric(String str)

    // 该正则表达式可以匹配所有的数字 包括负数

    Pattern pattern = Pattern.compile("-?[0-9]+\\\\.?[0-9]*");

参考技术B 有可能是小数哦,所以Integer不合适,还是自己写个方法吧,不如把String每个字节进行for循环,如果 不属于 【0,1,2,3,4,5,6,7,8,9,+,-,.】就是错的,当然还要考虑两个“.”两个“++”的情况 参考技术C str.matches("\\\\d+"); // int
str.matches("\\\\d+(\\\\.)?(\\\\d+)?"); // double or float

参考技术D try
Integer.valueOf(字符串)
catch
System.out.println('不能转');

以上是关于用java把阿拉伯数字转换成中文数字,怎么做的主要内容,如果未能解决你的问题,请参考以下文章

java 如何把数字转化成阿拉伯语数字、波斯数字

Java 关于中文大写金额与阿拉伯数字 互相转换的问题(eclipse版)

怎么将中文转换成数字代码

怎么将中文转换成数字代码

在WORD中怎样用VBA将人民币大写金额转换成小写金额

用java写一个汉字数字转化成阿拉伯数字的算法