如何在javascript中将整数值更改为单词。 [英] How to change an integer value to words in javascript.
本文介绍了如何在javascript中将整数值更改为单词。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在C#中有一个代码,它将任何传递的整数值更改为相应的单词,即1002将是'一千二'。
我想在'keyup'的javascript中做同样的事情活动。
我的C#代码是
public String changeToWords(字符串麻木)
{
字符串 val = ,wholeNo = numb,points = ,andStr = ,pointStr = ;
String endStr =( 跨度>);
尝试
{
int decimalPlace = numb.IndexOf(< span class =code-string> 。);
if (decimalPlace > 0 )
{
wholeNo = numb.Substring( 0 ,decimalPlace);
points = numb.Substring(decimalPlace + 1 );
if (Convert.ToInt32(points)> 0 )
{
andStr =( point); // 仅将整数与点/卢比分开
}
}
val = 字符串 .Format( {0} {1} {2} {3},translateWholeNumber(wholeNo).Trim(),andStr,pointStr,endStr);
}
catch
{
;
}
return val;
}
private 字符串 translateWholeNumber( String number)
{
string word = ;
尝试
{
bool startsZero = false ; // 测试0XX
bool isDone = false ; // 测试是否已翻译
double dblAmt =(Convert.ToDouble(number));
// if((dblAmt> 0)&& number.StartsWith(0) )
if (dblAmt > 0 )
{ // 测试零或数字零a nuemric
beginZero = number.StartsWith( 0);
int numDigits = number.Length;
int pos = 0 ; // 存储数字分组
字符串 place = ; // 数字分组名称:hundres,千等......
开关(numDigits)
{
case 1 : // 1个'范围
word = ones(number);
isDone = true ;
break ;
case 2 : // tens'range
word = tens(number);
isDone = true ;
break ;
case 3 : // 数百'范围
pos =(numDigits% 3 )+ 1 跨度>;
place = 百;
break ;
case 4 : // 数千'范围
case 5 :
case 6 :
pos =(numDigits% 4 )+ 1 ;
place = 千;
break ;
case 7 : // 数百万的范围
case 8 :
case 9 :
pos =(numDigits% 7 )+ 1 ;
place = 百万;
break ;
case 10 : // Billions的范围
pos =(numDigits% 10 )+ 1 跨度>;
place = 亿;
break ;
// 为超过亿美元的任何事物添加额外的案例选项......
< span class =code-keyword>默认:
isDone = true ;
break ;
}
if (!isDone)
{ // < span class =code-comment>如果没有完成转换,则继续...(递归现在进入!!)
word = translateWholeNumber(number.Substring( 0 ,pos))+ place + translateWholeNumber(number.Substring(pos));
// 检查尾随零
if (startsZero)word = 和 + word.Trim();
}
// 忽略数字分组名称
if (word.Trim()。Equals(place.Trim()))word = 跨度>;
}
}
catch
{
;
}
return word.Trim();
}
private String tens( String digit)
{
int digt = Convert.ToInt32(digit);
字符串 name = null ;
switch (digt)
{
case 10 :
name = Ten;
break ;
case 11 :
name = 十一;
break ;
case 12 :
name = 十二;
break ;
case 13 :
name = 十三;
break ;
case 14 :
name = 十四;
break ;
case 15 :
name = 十五;
break ;
case 16 :
name = 十六;
break ;
case 17 :
name = 十七;
break ;
case 18 :
name = 十八;
break ;
case 19 :
name = 十九;
break ;
case 20 :
name = 二十;
break ;
case 30 :
name = 三十;
break ;
case 40 :
name = 四十;
break ;
case 50 :
name = Fifty;
break ;
case 60 :
name = 六十;
break ;
case 70 :
name = 七十;
break ;
case 80 :
name = 八十;
break ;
case 90 :
name = 九十;
break ;
默认:
如果(digt > 0 )
{
name = tens(digit.Substring( 0 , 1 )+ 0 )+ + ones(digit.Substring( 1 跨度>));
}
break ;
}
返回名称;
}
private String ones( String digit)
{
int digt = Convert.ToInt32(digit);
字符串 name = ;
switch (digt)
{
case 1 :
name = 一个;
break ;
case 2 :
name = 两个;
break ;
case 3 :
name = 三;
break ;
case 4 :
name = 四;
break ;
case 5 :
name = 五;
break ;
case 6 :
name = 六;
break ;
case 7 :
name = 七;
break ;
case 8 :
name = 八;
break ;
case 9 :
name = 九;
break ;
}
返回名称;
}
解决方案
一个简单的 Google Search [ ^ ]可以提供大量的链接。我想知道什么阻止我们甚至使用谷歌
尝试
数字到单词 [ ^ ]
将数量转换为JavaScript中的字数 [ ^ ]
I've a code in C# that changes any passed integer value to corresponding words i.e. 1002 will be 'One thousand two'.
I want to do the same in javascript on a 'keyup' event.
My C# code is
public String changeToWords(String numb)
{
String val = "", wholeNo = numb, points = "", andStr = "", pointStr = "";
String endStr = ("");
try
{
int decimalPlace = numb.IndexOf(".");
if (decimalPlace > 0)
{
wholeNo = numb.Substring(0, decimalPlace);
points = numb.Substring(decimalPlace + 1);
if (Convert.ToInt32(points) > 0)
{
andStr = ("point");// just to separate whole numbers from points/Rupees
}
}
val = String.Format("{0} {1}{2} {3}", translateWholeNumber(wholeNo).Trim(), andStr, pointStr, endStr);
}
catch
{
;
}
return val;
}
private String translateWholeNumber(String number)
{
string word = "";
try
{
bool beginsZero = false;//tests for 0XX
bool isDone = false;//test if already translated
double dblAmt = (Convert.ToDouble(number));
//if ((dblAmt > 0) && number.StartsWith("0"))
if (dblAmt > 0)
{//test for zero or digit zero in a nuemric
beginsZero = number.StartsWith("0");
int numDigits = number.Length;
int pos = 0;//store digit grouping
String place = "";//digit grouping name:hundres,thousand,etc...
switch (numDigits)
{
case 1://ones' range
word = ones(number);
isDone = true;
break;
case 2://tens' range
word = tens(number);
isDone = true;
break;
case 3://hundreds' range
pos = (numDigits % 3) + 1;
place = " Hundred ";
break;
case 4://thousands' range
case 5:
case 6:
pos = (numDigits % 4) + 1;
place = " Thousand ";
break;
case 7://millions' range
case 8:
case 9:
pos = (numDigits % 7) + 1;
place = " Million ";
break;
case 10://Billions's range
pos = (numDigits % 10) + 1;
place = " Billion ";
break;
//add extra case options for anything above Billion...
default:
isDone = true;
break;
}
if (!isDone)
{//if transalation is not done, continue...(Recursion comes in now!!)
word = translateWholeNumber(number.Substring(0, pos)) + place + translateWholeNumber(number.Substring(pos));
//check for trailing zeros
if (beginsZero) word = " and " + word.Trim();
}
//ignore digit grouping names
if (word.Trim().Equals(place.Trim())) word = "";
}
}
catch
{
;
}
return word.Trim();
}
private String tens(String digit)
{
int digt = Convert.ToInt32(digit);
String name = null;
switch (digt)
{
case 10:
name = "Ten";
break;
case 11:
name = "Eleven";
break;
case 12:
name = "Twelve";
break;
case 13:
name = "Thirteen";
break;
case 14:
name = "Fourteen";
break;
case 15:
name = "Fifteen";
break;
case 16:
name = "Sixteen";
break;
case 17:
name = "Seventeen";
break;
case 18:
name = "Eighteen";
break;
case 19:
name = "Nineteen";
break;
case 20:
name = "Twenty";
break;
case 30:
name = "Thirty";
break;
case 40:
name = "Fourty";
break;
case 50:
name = "Fifty";
break;
case 60:
name = "Sixty";
break;
case 70:
name = "Seventy";
break;
case 80:
name = "Eighty";
break;
case 90:
name = "Ninety";
break;
default:
if (digt > 0)
{
name = tens(digit.Substring(0, 1) + "0") + " " + ones(digit.Substring(1));
}
break;
}
return name;
}
private String ones(String digit)
{
int digt = Convert.ToInt32(digit);
String name = "";
switch (digt)
{
case 1:
name = "One";
break;
case 2:
name = "Two";
break;
case 3:
name = "Three";
break;
case 4:
name = "Four";
break;
case 5:
name = "Five";
break;
case 6:
name = "Six";
break;
case 7:
name = "Seven";
break;
case 8:
name = "Eight";
break;
case 9:
name = "Nine";
break;
}
return name;
}
解决方案
A simple Google Search[^] can provide tons of links. I wonder what stopping us even to use google
Try
Numbers to Words[^]
Convert Amount in numbers to words in JavaScript[^]
这篇关于如何在javascript中将整数值更改为单词。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文