Advertisement
andresnogales

ConvertNumberToText

Apr 15th, 2024
600
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.16 KB | Software | 0 0
  1. public with sharing class ConvertNumberToText {
  2.     public ConvertNumberToText() {
  3.     }
  4.  
  5.     private static final List<String> tensNames = new List<String>{
  6.         '',
  7.         ' ten',
  8.         ' twenty',
  9.         ' thirty',
  10.         ' forty',
  11.         ' fifty',
  12.         ' sixty',
  13.         ' seventy',
  14.         ' eighty',
  15.         ' ninety'
  16.     };
  17.  
  18.     private static final List<String> numNames = new List<String>{
  19.         '',
  20.         ' one',
  21.         ' two',
  22.         ' three',
  23.         ' four',
  24.         ' five',
  25.         ' six',
  26.         ' seven',
  27.         ' eight',
  28.         ' nine',
  29.         ' ten',
  30.         ' eleven',
  31.         ' twelve',
  32.         ' thirteen',
  33.         ' fourteen',
  34.         ' fifteen',
  35.         ' sixteen',
  36.         ' seventeen',
  37.         ' eighteen',
  38.         ' nineteen'
  39.     };
  40.  
  41.     private static String convertLessThanOneThousand(Integer numberValue) {
  42.         String soFar;
  43.  
  44.         if (Math.mod(numberValue, 100) < 20) {
  45.             soFar = numNames[Math.mod(numberValue, 100)];
  46.             numberValue = numberValue / 100;
  47.         } else {
  48.             soFar = numNames[Math.mod(numberValue, 10)];
  49.             numberValue = numberValue / 10;
  50.  
  51.             soFar = tensNames[Math.mod(numberValue, 10)] + soFar;
  52.             numberValue = numberValue / 10;
  53.         }
  54.         if (numberValue == 0)
  55.             return soFar;
  56.         return numNames[numberValue] + ' hundred' + soFar;
  57.     }
  58.  
  59.     public static String convert(Long numberValue) {
  60.         // 0 to 999 999 999 999
  61.         if (numberValue == 0) {
  62.             return 'zero';
  63.         }
  64.         String snumber = String.valueOf(numberValue);
  65.  
  66.         // Pad with "0"
  67.         String mask = '000000000000';
  68.         while (snumber.length() < mask.length()) {
  69.             snumber = '0' + snumber;
  70.         }
  71.  
  72.         // XXXnnnnnnnnn
  73.         Integer billions = Integer.valueOf(snumber.substring(0, 3));
  74.         // nnnXXXnnnnnn
  75.         Integer millions = Integer.valueOf(snumber.substring(3, 6));
  76.         // nnnnnnXXXnnn
  77.         Integer hundredThousands = Integer.valueOf(snumber.substring(6, 9));
  78.         // nnnnnnnnnXXX
  79.         Integer thousands = Integer.valueOf(snumber.substring(9, 12));
  80.  
  81.         String tradBillions;
  82.         switch on (billions) {
  83.             when 0 {
  84.                 tradBillions = '';
  85.             }
  86.             when 1 {
  87.                 tradBillions =
  88.                     convertLessThanOneThousand(billions) + ' billion ';
  89.             }
  90.             when else {
  91.                 tradBillions =
  92.                     convertLessThanOneThousand(billions) + ' billion ';
  93.             }
  94.         }
  95.         String result = tradBillions;
  96.  
  97.         String tradMillions;
  98.         switch on (millions) {
  99.             when 0 {
  100.                 tradMillions = '';
  101.             }
  102.             when 1 {
  103.                 tradMillions =
  104.                     convertLessThanOneThousand(millions) + ' million ';
  105.             }
  106.             when else {
  107.                 tradMillions =
  108.                     convertLessThanOneThousand(millions) + ' million ';
  109.             }
  110.         }
  111.         result = result + tradMillions;
  112.  
  113.         String tradHundredThousands;
  114.         switch on (hundredThousands) {
  115.             when 0 {
  116.                 tradHundredThousands = '';
  117.             }
  118.             when 1 {
  119.                 tradHundredThousands = 'one thousand ';
  120.             }
  121.             when else {
  122.                 tradHundredThousands =
  123.                     convertLessThanOneThousand(hundredThousands) + ' thousand ';
  124.             }
  125.         }
  126.         result = result + tradHundredThousands;
  127.  
  128.         String tradThousand;
  129.         tradThousand = convertLessThanOneThousand(thousands);
  130.         result = result + tradThousand;
  131.  
  132.         // remove extra spaces!
  133.         return result.replaceAll('^\\s+', '').replaceAll('\\b\\s{2,}\\b', ' ');
  134.     }
  135.  
  136.     /*
  137.     String phrase = '12345.67';
  138.     Decimal num = Decimal.valueOf(phrase);
  139.     Integer dollars = num.intValue();
  140.     Integer cent = Integer.valueOf((num - dollars) * 100);
  141.  
  142.     String s = '$ ' + ConvertNumberToText.convert(dollars) + ' and '
  143.             + ConvertNumberToText.convert(cent) + ' cents';
  144.     System.debug(s);
  145.     */
  146. }
  147.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement