NgThanhPhuc

Android_NumberToMoneyVND

May 10th, 2016
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.02 KB | None | 0 0
  1. import java.text.DecimalFormat;
  2. /**
  3. * Created by caotung on 1/16/16.
  4. */
  5. public class VietnameseNumberToWords {
  6. private static final String[] tensNames = {
  7. "",
  8. " mười",
  9. " hai mươi",
  10. " ba mươi",
  11. " bốn mươi",
  12. " năm mươi",
  13. " sáu mươi",
  14. " bảy mươi",
  15. " tám mươi",
  16. " chín mươi"
  17. };
  18. private static final String[] numNames = {
  19. "",
  20. " một",
  21. " hai",
  22. " ba",
  23. " bốn",
  24. " năm",
  25. " sáu",
  26. " bảy",
  27. " tám",
  28. " chín",
  29. " mười",
  30. " mười một",
  31. " mười hai",
  32. " mười ba",
  33. " mười bốn",
  34. " mười lăm",
  35. " mười sáu",
  36. " mười bảy",
  37. " mười tám",
  38. " mười chín"
  39. };
  40. private VietnameseNumberToWords() {}
  41. private static String convertLessThanOneThousand(int number) {
  42. String soFar;
  43. if (number % 100 < 20){
  44. soFar = numNames[number % 100];
  45. number /= 100;
  46. }
  47. else {
  48. soFar = numNames[number % 10];
  49. number /= 10;
  50. soFar = tensNames[number % 10] + soFar;
  51. number /= 10;
  52. }
  53. if (number == 0) return soFar;
  54. return numNames[number] + " trăm" + soFar;
  55. }
  56. public static String convert(long number) {
  57. // 0 to 999 999 999 999
  58. if (number == 0) { return "không"; }
  59. String snumber = Long.toString(number);
  60. // pad with "0"
  61. String mask = "000000000000";
  62. DecimalFormat df = new DecimalFormat(mask);
  63. snumber = df.format(number);
  64. // XXXnnnnnnnnn
  65. int billions = Integer.parseInt(snumber.substring(0,3));
  66. // nnnXXXnnnnnn
  67. int millions = Integer.parseInt(snumber.substring(3,6));
  68. // nnnnnnXXXnnn
  69. int hundredThousands = Integer.parseInt(snumber.substring(6,9));
  70. // nnnnnnnnnXXX
  71. int thousands = Integer.parseInt(snumber.substring(9,12));
  72. String tradBillions;
  73. switch (billions) {
  74. case 0:
  75. tradBillions = "";
  76. break;
  77. case 1 :
  78. tradBillions = convertLessThanOneThousand(billions)
  79. + " tỷ ";
  80. break;
  81. default :
  82. tradBillions = convertLessThanOneThousand(billions)
  83. + " tỷ ";
  84. }
  85. String result = tradBillions;
  86. String tradMillions;
  87. switch (millions) {
  88. case 0:
  89. tradMillions = "";
  90. break;
  91. case 1 :
  92. tradMillions = convertLessThanOneThousand(millions)
  93. + " triệu ";
  94. break;
  95. default :
  96. tradMillions = convertLessThanOneThousand(millions)
  97. + " triệu ";
  98. }
  99. result = result + tradMillions;
  100. String tradHundredThousands;
  101. switch (hundredThousands) {
  102. case 0:
  103. tradHundredThousands = "";
  104. break;
  105. case 1 :
  106. tradHundredThousands = "một ngàn ";
  107. break;
  108. default :
  109. tradHundredThousands = convertLessThanOneThousand(hundredThousands)
  110. + " ngàn ";
  111. }
  112. result = result + tradHundredThousands;
  113. String tradThousand;
  114. tradThousand = convertLessThanOneThousand(thousands);
  115. result = result + tradThousand;
  116. // remove extra spaces!
  117. result = result + " đồng";
  118. return result.replaceAll("^\\s+", "").replaceAll("\\b\\s{2,}\\b", " ");
  119. }
  120. /**
  121. * testing
  122. * @param args
  123. */
  124. public static void main(String[] args) {
  125. System.out.println("*** " + VietnameseNumberToWords.convert(0));
  126. System.out.println("*** " + VietnameseNumberToWords.convert(1));
  127. System.out.println("*** " + VietnameseNumberToWords.convert(16));
  128. System.out.println("*** " + VietnameseNumberToWords.convert(100));
  129. System.out.println("*** " + VietnameseNumberToWords.convert(118));
  130. System.out.println("*** " + VietnameseNumberToWords.convert(200));
  131. System.out.println("*** " + VietnameseNumberToWords.convert(219));
  132. System.out.println("*** " + VietnameseNumberToWords.convert(800));
  133. System.out.println("*** " + VietnameseNumberToWords.convert(801));
  134. System.out.println("*** " + VietnameseNumberToWords.convert(1316));
  135. System.out.println("*** " + VietnameseNumberToWords.convert(1000000));
  136. System.out.println("*** " + VietnameseNumberToWords.convert(2000000));
  137. System.out.println("*** " + VietnameseNumberToWords.convert(3000200));
  138. System.out.println("*** " + VietnameseNumberToWords.convert(700000));
  139. System.out.println("*** " + VietnameseNumberToWords.convert(9000000));
  140. System.out.println("*** " + VietnameseNumberToWords.convert(9001000));
  141. System.out.println("*** " + VietnameseNumberToWords.convert(123456789));
  142. System.out.println("*** " + VietnameseNumberToWords.convert(2147483647));
  143. System.out.println("*** " + VietnameseNumberToWords.convert(3000000010L));
  144. }
  145. }
Add Comment
Please, Sign In to add comment