您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“string實(shí)現(xiàn)數(shù)字轉(zhuǎn)中文的方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“string實(shí)現(xiàn)數(shù)字轉(zhuǎn)中文的方法”吧!
public static final String EMPTY = "";
public static final String ZERO = "零";
public static final String ONE = "壹";
public static final String TWO = "貳";
public static final String THREE = "叁";
public static final String FOUR = "肆";
public static final String FIVE = "伍";
public static final String SIX = "陸";
public static final String SEVEN = "柒";
public static final String EIGHT = "捌";
public static final String NINE = "玖";
public static final String TEN = "拾";
public static final String HUNDRED = "佰";
public static final String THOUSAND = "仟";
public static final String TEN_THOUSAND = "萬";
public static final String HUNDRED_MILLION = "億";
public static final String YUAN = "元";
public static final String JIAO = "角";
public static final String FEN = "分";
public static final String DOT = ".";
private static MoneyFormatTest formattest = null;//定義一個(gè)靜態(tài)的MoneyFormatTest類讓它空
//建了兩個(gè)HashMap數(shù)的散列表。
private HashMap chineseNumberMap = new HashMap();
private HashMap chineseMoneyPattern = new HashMap();
/*NumberFormat 是所有數(shù)值格式的抽象基類。 該類提供了格式化和分析數(shù)值的接口。 NumberFormat 也提供了確定哪個(gè)語(yǔ)言環(huán)境具有數(shù)值格式以及它們名字的方法。
NumberFormat 幫助格式化和分析任何語(yǔ)言環(huán)境的數(shù)值。 代碼可以完全不依賴于語(yǔ)言環(huán)境中關(guān)于十進(jìn)制小數(shù)點(diǎn)、千進(jìn)位分隔符的約定,甚至關(guān)于使用特別的十進(jìn)制數(shù)字或數(shù)值格式是否為小數(shù)的約定。
*/
private NumberFormat numberFormat = NumberFormat.getInstance();//為了格式化當(dāng)前 Locale 的數(shù)值,使用下列靜態(tài)工廠方法之一。
//構(gòu)造方法
private MoneyFormatTest() {
numberFormat.setMaximumFractionDigits(4);
numberFormat.setMinimumFractionDigits(2);
numberFormat.setGroupingUsed(false);
//在該散列表中映射指定的 鍵 到指定的 值 。
chineseNumberMap.put("0", ZERO);
chineseNumberMap.put("1", ONE);
chineseNumberMap.put("2", TWO);
chineseNumberMap.put("3", THREE);
chineseNumberMap.put("4", FOUR);
chineseNumberMap.put("5", FIVE);
chineseNumberMap.put("6", SIX);
chineseNumberMap.put("7", SEVEN);
chineseNumberMap.put("8", EIGHT);
chineseNumberMap.put("9", NINE);
chineseNumberMap.put(DOT, DOT);
chineseMoneyPattern.put("1", TEN);
chineseMoneyPattern.put("2", HUNDRED);
chineseMoneyPattern.put("3", THOUSAND);
chineseMoneyPattern.put("4", TEN_THOUSAND);
chineseMoneyPattern.put("5", TEN);
chineseMoneyPattern.put("6", HUNDRED);
chineseMoneyPattern.put("7", THOUSAND);
chineseMoneyPattern.put("8", HUNDRED_MILLION);
}
//如果是formatter等于空,也就是如果是第一次載入的就實(shí)例化SimpleMoneyFormat類,返回SimpleMoneyFormat的一個(gè)對(duì)象。
public static MoneyFormatTest getInstance() {
if (formattest == null)
formattest= new MoneyFormatTest();
return formattest;
}
//重載format方法格式的規(guī)范傳入不同類型的參數(shù),返回String類型
public String format(String moneyStr) {
checkPrecision(moneyStr);
String result;
result = convertToChineseNumber(moneyStr);
result = addUnitsToChineseMoneyString(result);
return result;
}
public String format(double moneyDouble) {
return format(numberFormat.format(moneyDouble));
}
public String format(int moneyInt) {
return format(numberFormat.format(moneyInt));
}
public String format(long moneyLong) {
return format(numberFormat.format(moneyLong));
}
public String format(Number moneyNum) {
return format(numberFormat.format(moneyNum));
}
private String convertToChineseNumber(String moneyStr) {
String result;
StringBuffer cMoneyStringBuffer = new StringBuffer();//定義字符串緩沖區(qū)實(shí)現(xiàn)可變字符序列
for (int i = 0; i < moneyStr.length(); i++) {
cMoneyStringBuffer.append(chineseNumberMap.get(moneyStr.substring(i, i + 1)));//添加字符串到字符串緩沖區(qū)。
}
//拾佰仟萬億等都是漢字里面才有的單位,加上它們
int indexOfDot = cMoneyStringBuffer.indexOf(DOT);
int moneyPatternCursor = 1;
for (int i = indexOfDot - 1; i > 0; i--) {
cMoneyStringBuffer.insert(i, chineseMoneyPattern.get(EMPTY + moneyPatternCursor));
moneyPatternCursor = moneyPatternCursor == 8 ? 1 : moneyPatternCursor + 1;
}
到此,相信大家對(duì)“string實(shí)現(xiàn)數(shù)字轉(zhuǎn)中文的方法”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。