function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
AnithaCRMAnithaCRM 

Number to Words

Hi I Need help for convering Amount to Words in INR Format.

 

For Instance:

1987765:

Nineteen Lakh Eighty Seven Thousand Seven Hundred and Sixty Five.

Can any one help me !!!!!

Urgent Requirement.

 

Thanks in Advance.

Mouse.liuMouse.liu
Maybe this sample is not very suit for you, however, you can change it as your requirement.
/**
* 用法打印结果如下:(注:小数点後只能解析两位,这个主要用於解析货币数用) 01=ONE ONLY 09=NINE ONLY 11=ELEVEN
* 407,170.40=FOUR HUNDRED SEVEN THOUSAND ONE HUNDRED SEVENTY POINT FORTY ONLY.
* @param args 
*/
public static String parse(String str) {
 
    if (str == null || str == '' || !(Pattern.matches('[\\d.]*', str))){
    System.debug('[StringUtils.cls] String parameter is null or empty or Non-digit.');
    return '';
    }
   
if( Decimal.valueOf(str) == 0 ){
System.debug('[StringUtils.cls] String parameter is Zero.');
return '';
}
   
String lstr = '', rstr = '';
 
    List<String> taList =str.split('\\.');
 
if(taList.size()==2){
rstr=taList.get(1);
lstr=taList.get(0);
}else if(taList.size()==1){
lstr=taList.get(0);
}
String lstrrev = reverse(lstr); // 对左边的字串取反
String[] a = new String[5]; // 定义5个字串变量来存放解析出来的叁位一组的字串
 
if(Math.mod(lstrrev.length() , 3) == 1){
lstrrev += '00';
}else if(Math.mod(lstrrev.length() , 3) == 2){
lstrrev += '0';
}
 
String lm = ''; // 用来存放转换後的整数部分
for (Integer i = 0; i < lstrrev.length() / 3; i++) {
 
a[i] = reverse(lstrrev.substring(3 * i, 3 * i + 3)); // 截取第一个叁位
if (!a[i].equals('000')) { // 用来避免这种情况:1000000 = one million
// thousand only
if (i != 0){
lm = transThree(a[i]) + ' ' + parseMore(String.valueOf(i))
+ ' ' + lm; // 加: thousand、million、billion
}else{
lm = transThree(a[i]); // 防止i=0时, 在多加两个空格.
}
} else{
lm += transThree(a[i]);
}
 
}
//如果要加POINT,则使用 xs = 'POINT ' + transTwo(rstr) + ' ';
String xs = ''; // 用来存放转换後小数部分
if (!(rstr.equals('00') || rstr.equals('0') || rstr.equals(''))){
xs = ' DOLLARS AND ' + transTwo(rstr) + ' CENTS'; // 小数部分存在时转换小数
}else{
lm = lm + ' DOLLARS ONLY';
}
 
return lm.trim() + xs;
}
 
// 两位
private static String transTwo(String s) {
String value = '';
// 判断位数
if (s.length() > 2){
s = s.substring(0, 2);
}else if (s.length() < 2){
s = '0' + s;
}
if (s.startsWith('0')) // 07 - seven 是否小於10
value = parseFirst(s);
else if (s.startsWith('1')) // 17 seventeen 是否在10和20之间
value = parseTeen(s);
else if (s.endsWith('0')) // 是否在10与100之间的能被10整除的数
value = parseTen(s);
else
value = parseTen(s) + ' ' + parseFirst(s);
return value;
}
private static String parseFirst(String s) {
 
String[] a = new String[] { '', 'ONE', 'TWO', 'THREE', 'FOUR', 'FIVE',
'SIX', 'SEVEN', 'EIGHT', 'NINE' };
return a[Integer.valueOf(s.substring(s.length() - 1))];
}
private static String parseTen(String s) {
 
String[] a = new String[] { 'TEN', 'TWENTY', 'THIRTY', 'FORTY',
'FIFTY', 'SIXTY', 'SEVENTY', 'EIGHTY', 'NINETY' };
 
return a[Integer.valueOf(s.substring(0, 1)) - 1];
}
 
private static String parseTeen(String s) {
 
String[] a = new String[] { 'TEN', 'ELEVEN', 'TWELEVE', 'THIRTEEN',
    'FOURTEEN', 'FIFTEEN', 'SIXTEEN', 'SEVENTEEN', 
    'EIGHTEEN','NINETEEN' };
 
return a[Integer.valueOf(s) - 10];
}
private static String parseMore(String s) {
String[] a = new String[] { '', 'THOUSAND', 'MILLION', 'BILLION' };
return a[Integer.valueOf(s)];
}
// 制作叁位的数
// s.length = 3
private static String transThree(String s) {
String value = '';
if (s.startsWith('0')) // 是否小於100
value = transTwo(s.substring(1));
else if (s.substring(1).equals('00')) // 是否被100整除
value = parseFirst(s.substring(0, 1)) + ' HUNDRED';
else
value = parseFirst(s.substring(0, 1)) + ' HUNDRED '
+ transTwo(s.substring(1));
return value;
}
Sara SrinivasanSara Srinivasan

Hi Anitha,

 

Need help on this..Feel free to mail me at: send2sar5@gmail.com