阿拉伯数字转成汉字

534 阅读3分钟

在批量使用测试账号的时候,需要对账号进行标记,一般用username字段,之前的策略是统一的名称+用户编号(测试用户的编号,非用户id),由于需求变更,用户username不允许使用数字了,所以需要把数字转成汉字来进行标记。 下面分享集中方法:

private static String change1(int n) {// 数字转换成汉字表示
        String[] c = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
        String ss = n + "";//把输入的内容转换成String类型字符串
        StringBuilder builder = new StringBuilder("");
        int j;
        for (int i = 0; i < ss.length(); i++) {
            for (j = 0; j <= 9; j++) {// 遍历ss字符串中每个字符并追加到builder中
                if (ss.charAt(i) == j + '0') {
                    break;
                }
            }
            builder.append(c[j]);//往builder对象中追加获取的字符
        }
        return builder.toString();//返回该字符串
    }

    private static String change2(int n) {// 数字转换成汉字表示
        String[] c = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
        String ss = n + "";//把输入的内容转换成String类型字符串
        StringBuilder builder = new StringBuilder("");
        for (int i = 0; i < ss.length(); i++) {
            char c1 = ss.charAt(i);
            int i1 = Integer.parseInt(c1 + "");
            builder.append(c[i1]);//往builder对象中追加获取的字符
        }
        return builder.toString();//返回该字符串
    }

    private static String change3(int n) {// 数字转换成汉字表示
        String[] c = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
        String ss = n + "";//把输入的内容转换成String类型字符串
        StringBuilder builder = new StringBuilder("");
        IntStream.range(0, ss.length()).forEach(x -> builder.append(c[Integer.valueOf(ss.charAt(x) + "")]));
        return builder.toString();//返回该字符串
    }

    private static String change4(int n) {// 数字转换成汉字表示
        String[] c = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
        return IntStream.range(0, (n + "").length()).mapToObj(x -> c[Integer.valueOf((n + "").charAt(x) + "")]).collect(Collectors.joining()).toString();
    }

    private static String change5(int n) {// 数字转换成汉字表示
        String[] c = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
        return Arrays.asList((n + "").toCharArray()).stream().map(x -> c[Integer.valueOf(x + "")]).collect(Collectors.joining()).toString();
    }

由于使用了脚本语言Groovy,所以功能还是需要用Groovy写的,下面是Groovy版本:

    static String[] chineses = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"]

    static String[] capeChineses = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"]
/**
 * 将int类型转化为汉子数字,对于3位数的数字自动补零
 * @param i
 * @return
 */
    static String getChinese(int i) {
        if (i <= 0) return "零零零"
        String num = (i + EMPTY).collect { x -> chineses[changeStringToInt(x)] }.join()
        num.length() > 2 ? num : getManyString(chineses[0] + EMPTY, 3 - num.length()) + num
    }

/**
 * 将int类型转化汉字大写数字表示
 * @param i
 * @return
 */
    static String getCapeChinese(int i) {
        (i + EMPTY).collect { x -> capeChineses[changeStringToInt(x)] }.join()
    }

不得不说,脚本语言真香。

技术类文章精选

  1. java一行代码打印心形
  2. Linux性能监控软件netdata中文汉化版
  3. 接口测试代码覆盖率(jacoco)方案分享
  4. 性能测试框架
  5. 如何在Linux命令行界面愉快进行性能测试
  6. 图解HTTP脑图
  7. 如何测试概率型业务接口
  8. httpclient处理多用户同时在线
  9. 将swagger文档自动变成测试代码
  10. 五行代码构建静态博客
  11. httpclient如何处理302重定向
  12. 基于java的直线型接口测试框架初探
  13. Tcloud 云测平台--集大成者
  14. 如何测试概率型业务接口
  15. Android App 测试工具及知识大集合

非技术文章精选

  1. 为什么选择软件测试作为职业道路?
  2. 成为杰出Java开发人员的10个步骤
  3. 写给所有人的编程思维
  4. 自动化测试的障碍
  5. 自动化测试的问题所在
  6. 测试之《代码不朽》脑图
  7. 成为优秀自动化测试工程师的7个步骤
  8. 优秀软件开发人员的态度
  9. 如何正确执行功能API测试
  10. 未来10年软件测试的新趋势-上
  11. 未来10年软件测试的新趋势-上
  12. 自动化测试解决了什么问题
  13. 17种软件测试人员常用的高效技能-上
  14. 17种软件测试人员常用的高效技能-下

大咖风采

  1. Tcloud 云测平台--集大成者
  2. Android App 测试工具及知识大集合
  3. 4399AT UI自动化CI与CD

点击查看公众号地图