人民幣小寫轉換為大寫
將人民幣的小寫形式轉換為大寫,例如:呼叫upper("18.5"),將會返回字串“壹拾捌圓伍角”。
import org.junit.Test;
/**
* 測試人民幣小寫轉大寫
* @author zhengzhb
*/
public class UpperMoney {
public String upper(String money) throws Exception{
if(!money.matches("^[1-9]+[0-9]*$|^[1-9]+[0-9]*.[0-9]+$" )){
throw new Exception("錢數格式錯誤!");
}
String[] part= money.split("\\.");
StringBuffer integer = new StringBuffer();
for(int i=0;i<part[0].length();i++){
char perchar = part[0].charAt(i);
integer.append(this.upperNumber(perchar));
integer.append(this.upperNumber(part[0].length()-i-1));
}
StringBuffer decimal = new StringBuffer();
if(part.length>1 && !"00".equals(part[1])){
int length = part[1].length()>=2?2:part[1].length();
for(int i=0;i<length;i++){
char perchar = part[1].charAt(i);
decimal.append(this.upperNumber(perchar));
if(i==0)decimal.append('角');
if(i==1)decimal.append('分');
}
}
String result = integer.toString()+decimal.toString();
return this.dispose(result);
}
private char upperNumber(char number){
switch(number){
case '0': return '零';
case '1': return '壹';
case '2': return '貳';
case '3': return '叄';
case '4': return '肆';
case '5': return '伍';
case '6': return '陸';
case '7': return '柒';
case '8': return '捌';
case '9': return '玖';
}
return 0;
}
private char upperNumber(int index){
switch(index){
case 0: return '圓';
case 1: return '拾';
case 2: return '佰';
case 3: return '仟';
case 4: return '萬';
case 5: return '拾';
case 6: return '佰';
case 7: return '仟';
case 8: return '億';
case 9: return '拾';
case 10: return '佰';
case 11: return '仟';
}
return 0;
}
private String dispose(String result){
result = result.replaceAll("零仟零佰零拾|零仟零佰|零佰零拾|零仟|零佰|零拾", "零")
.replaceAll("零+", "零").replace("零億", "億");
result = result.matches("^.*億零萬[^零]仟.*$" )?result.replace("零萬", "零")
:result.replace("零萬", "萬");
result = result.replace("億萬", "億").replace("零圓", "圓").replace("零分", "")
.replaceAll("圓零角零分|圓零角$|圓$" , "圓整");
return result;
}
@Test
public void test(){
try {
Assert.assertEquals(upper("1"), "壹圓整");
Assert.assertEquals(upper("10"), "壹拾圓整");
Assert.assertEquals(upper("20.7"), "貳拾圓柒角");
Assert.assertEquals(upper("10.70"), "壹拾圓柒角");
Assert.assertEquals(upper("18.5"), "壹拾捌圓伍角");
Assert.assertEquals(upper("200.5"), "貳佰圓伍角");
Assert.assertEquals(upper("2000"), "貳仟圓整");
Assert.assertEquals(upper("50000"), "伍萬圓整");
Assert.assertEquals(upper("500000"), "伍拾萬圓整");
Assert.assertEquals(upper("5000000"), "伍佰萬圓整");
Assert.assertEquals(upper("50000000"), "伍仟萬圓整");
Assert.assertEquals(upper("500000000"), "伍億圓整");
Assert.assertEquals(upper("5000000000"), "伍拾億圓整");
Assert.assertEquals(upper("5000000001"), "伍拾億零壹圓整");
Assert.assertEquals(upper("5000000021"), "伍拾億零貳拾壹圓整");
Assert.assertEquals(upper("5000000421"), "伍拾億零肆佰貳拾壹圓整");
Assert.assertEquals(upper("5000005421"), "伍拾億零伍仟肆佰貳拾壹圓整");
Assert.assertEquals(upper("5000035421"), "伍拾億零叄萬伍仟肆佰貳拾壹圓整");
Assert.assertEquals(upper("5000635421"), "伍拾億零陸拾叄萬伍仟肆佰貳拾壹圓整");
Assert.assertEquals(upper("5004635421"), "伍拾億零肆佰陸拾叄萬伍仟肆佰貳拾壹圓整");
Assert.assertEquals(upper("5024635421"), "伍拾億貳仟肆佰陸拾叄萬伍仟肆佰貳拾壹圓整");
Assert.assertEquals(upper("5224635421"), "伍拾貳億貳仟肆佰陸拾叄萬伍仟肆佰貳拾壹圓整");
Assert.assertEquals(upper("15224635421"), "壹佰伍拾貳億貳仟肆佰陸拾叄萬伍仟肆佰貳拾壹圓整");
Assert.assertEquals(upper("215224635421"), "貳仟壹佰伍拾貳億貳仟肆佰陸拾叄萬伍仟肆佰貳拾壹圓整");
Assert.assertEquals(upper("500021"), "伍拾萬零貳拾壹圓整");
Assert.assertEquals(upper("5000821"), "伍佰萬零捌佰貳拾壹圓整");
Assert.assertEquals(upper("5050006501"), "伍拾億伍仟萬陸仟伍佰零壹圓整");
Assert.assertEquals(upper("550300001"), "伍億伍仟零叄拾萬零壹圓整");
} catch (Exception e) {
e.printStackTrace();
}
}
}
相關文章
- javascript 人民幣小寫轉換為大寫形式程式碼例項JavaScript
- 小寫金額轉換為大寫
- JavaScript 小寫數字轉換為大寫JavaScript
- 人民幣大寫線上轉換工具
- 在Oracle中將小寫人民幣轉換成大寫Oracle
- js將小寫數字轉換為大寫形式JS
- 試題 演算法提高 小寫轉換為大寫 C++演算法C++
- Python 轉換金額數字大寫為數字小寫Python
- C# 把日期字串轉換為日期型別 (MM大寫為月、小寫為分鐘)C#字串型別
- ASP.NET 實現人民幣大寫轉換函式ASP.NET函式
- Notes中人民幣大寫換算的實現 (轉)
- php人民幣小寫轉大寫函式,不限長度,精確到分PHP函式
- 將金錢數額轉換為大寫
- 轉Java開發 Java 小寫轉大寫Java
- 小寫轉大寫金額[SQL SERVER] (轉)SQLServer
- 金額大寫轉換(轉)
- 大寫金額轉換 (轉)
- excel大寫字母轉換Excel
- Excel金額小寫轉大寫公式Excel公式
- 小寫數字金額轉大寫
- js 小寫轉換,取字尾JS
- C語言:將字串中所有小寫字母轉為大寫字母C語言字串
- pb實現列印中人民幣大寫 (轉)
- CoffeeScript攻略3.2:把字串轉換為小寫形式字串
- 第一個正式而簡單的 composer package-人民幣轉換為漢字大寫Package
- 金額大寫轉換(摘)
- 將金錢的金額轉換為大寫形式
- js如何將英文字元轉換為大寫JS字元
- CoffeeScript攻略3.3:把字串轉換為大寫形式字串
- MySQL批量轉換表名為小寫(Python指令碼)MySqlPython指令碼
- php首字母小寫怎麼轉大寫PHP
- java 人民幣大寫顯示Java
- 13:將字串中的小寫字母轉換成大寫字母字串
- plsql小寫金額轉大寫金額函式SQL函式
- 小寫轉大寫金額在C++中的實現 (轉)C++
- 數字轉換為漢字大寫形式程式碼例項
- 小寫轉大寫金額儲存過程[SQL SERVER]儲存過程SQLServer
- CSS將英文字元轉換為小寫例項程式碼CSS字元