将字母转换成英文的工具类

public class numberdeal {
public static final String ZERO = "zero";
public static final String NEGATIVE = "negative";
public static final String SPACE = " ";
public static final String MILLION = "million";
public static final String THOUSAND = "thousand";
public static final String HUNDRED = "hundred";
public static final String[] INDNUM = { "zero", "one", "two", "three",
"four", "five", "six", "seven", "eight", "nine", "ten", "eleven",
"twelve", "thirteen", "fourteen", "fifteen", "sixteen",
"seventeen", "eighteen", "nineteen" };
public static final String[] DECNUM = { "twenty", "thirty", "forty",
"fifty", "sixty", "seventy", "eighty", "ninety" };


// 数字转换英文
public String format(int i) {
StringBuilder sb = new StringBuilder();
if (i == 0) {
return ZERO;
}
if (i < 0) {
sb.append(NEGATIVE).append(SPACE);
i *= -1;
}


if (i >= 1000000) {
sb.append(numFormat(i / 1000000)).append(SPACE).append(MILLION)
.append(SPACE);
i %= 1000000;


}


if (i >= 1000) {
sb.append(numFormat(i / 1000)).append(SPACE).append(THOUSAND)
.append(SPACE);


i %= 1000;
}


if (i < 1000) {
sb.append(numFormat(i));
}


return sb.toString();
}


// 3位数转英文
public String numFormat(int i) {


StringBuilder sb = new StringBuilder();


if (i >= 100) {
sb.append(INDNUM[i / 100]).append(SPACE).append(HUNDRED).append(
SPACE);
}


i %= 100;


if (i != 0) {
if (i >= 20) {
sb.append(DECNUM[i / 10 - 2]).append(SPACE);
if (i % 10 != 0) {
sb.append(INDNUM[i % 10]);
}
} else {
sb.append(INDNUM[i]);
}
}


return sb.toString();
}


// 英文转数字
public int parse(String str) {
HashMap<String, Integer> hm = new HashMap<String, Integer>();
hm.put("zero", 0);
hm.put("one", 1);
hm.put("two", 2);
hm.put("three", 3);
hm.put("four", 4);
hm.put("five", 5);
hm.put("six", 6);
hm.put("seven", 7);
hm.put("eight", 8);
hm.put("nine", 9);
hm.put("ten", 10);
hm.put("eleven", 11);
hm.put("twelve", 12);
hm.put("thirteen", 13);
hm.put("fourteen", 14);
hm.put("fifteen", 15);
hm.put("sixteen", 16);
hm.put("seventeen", 17);
hm.put("eighteen", 18);
hm.put("nineteen", 19);
hm.put("twenty", 20);
hm.put("thirty", 30);
hm.put("forty", 40);
hm.put("fifty", 50);
hm.put("sixty", 60);
hm.put("seventy", 70);
hm.put("eighty", 80);
hm.put("ninety", 90);
hm.put("hundred", 100);
hm.put("thousand", 1000);
hm.put("million", 1000000);
int i = 0;
int b = 0;
int c = 0;
String[] k = str.split(" ");
for (String string : k) {
if ("hundred".equals(string)) {
i *= hm.get("hundred");
} else if ("thousand".equals(string)) {
b = i;
b *= hm.get("thousand");
i = 0;
} else if ("million".equals(string)) {
c = i;
c *= hm.get("million");
i = 0;
} else if ("negative".equals(string)) {
i = 0;
} else {
i += hm.get(string);
}
}
i += c + b;
for (String string2 : k) {
if ("negative".equals(string2)) {
i = -i;
}
}
return i;
}


}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值