如何在javascript中将整数值更改为单词。 [英] How to change an integer value to words in javascript.

查看:74
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆