阿拉伯数字转成汉字
- 2019 年 10 月 11 日
- 筆記
在批量使用测试账号的时候,需要对账号进行标记,一般用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() }
不得不说,脚本语言真香。