javascript 使用數組+循環+條件實現數字轉換為漢字的簡單方法。


這幾天,博主碰到了幾道關於數字轉漢字的javascript算法題,在網上找了很多的答案,發現都有點復雜,於是我決定自己寫一篇關於這種算法題的簡單解法,以下是博主自己的見解,有不足的地方請多指教。

接下來,我給大家講解一下幾道類似的例題

一、單個數字轉漢字的解決方法

1.利用數組存儲0-9的漢字,代碼如下:

<html>
    <head>
        <title>數字轉換為漢字</title>
    </head>
    <body>
        <script type = "text/javascript">
            var ary = ["零","壹","貳","叄","肆","伍","陸","柒","捌","玖"];
        </script>
    </body>
</html>

2.接着我們定義一個變量名為str的字符串,並賦值0,,代碼如下:

var str = "0";

3.那么我們該怎么把0轉換為零呢?使用“對號入座”算法,代碼如下:

for(var i = 0;i < ary.length;i++)
{
    for(var j = 0;j < str.length;j++)
    {
      if(str.charAt(j) == i)
      {
          str = ary[i];
      }
    }
}

(1) ary.length和str.length不用多說,這是指ary數組和str字符串的長度。這里我們需要注意的是str.charAt(j)和ary[i],分別指在str這個字符串中索引為j的元素,在ary中索引為i的元素。

(2)在上面這段代碼的意思是,從漢字數組的第一個元素開始循環字符串的每一個元素,如果字符串里有對應的數字和i相等,就把此時ary數組中索引為i的元素賦給str(因為索引剛剛好從0開始,所以0代表零)。最后我們只要把str打印出來就可以了。

 

二、多個數字的轉換

從上面這段代碼中,我們知道了如何將單個數字轉換為漢字的方法,那么我們接下來就講解多個數字轉換為漢字的方法

1.在原有的代碼上定義一個新的數組new_str來存儲字符串的每個元素,代碼如下:

var new_str = new Array(str.length);

2.將str = ary[i]改為new_str[j] = ary[i],代碼如下:

new_str[j] = ary[i];

3.最后,只需要把數組打印出來就行了。

document.write(new_str);

然后博主發現一個問題,以上將1221打印為壹,貳,貳,壹,那么我們能不能把逗號去掉呢?可以的,只要寫一個循環把數組打印出來,代碼如下:

for(var i = 0;i < new_str.length;i++)
{
    document.write(new_str[i]);
}

最后打印出來的效果是壹貳貳壹。

三、上面的這些代碼只是原樣打印出來,能不能打印出“23 = 貳拾三”這種代碼呢?當然可以

1.能不能根據23后面的所剩下的幾位數,添加不同的漢字,例如23的2后面只剩下1位那么我就在貳后面加上拾,23的3后面沒有數了,那就直接打印叄,那就試試看看,代碼如下:

for(var i = 0;i < new_str.length;i++)
{
    switch(new_str.length - (i+1))
    {
        case 1:
        {
            new_str[i] += "拾";
            break;    
        }
        case 2:
        {
            new_str[i] += "佰";
            break;    
        }
        case 3:
        {
            new_str[i] += "仟";
            break;    
        }
            case 4:
        {
            new_str[i] += "萬";
            break;    
        }
    }
}

以上代碼我只寫到了萬。拾萬,仟萬,億這些需要自己添加下去,所以對可以轉換的數字只限制在10萬以內。

最后做一下總結,上面這段代碼可以把999打印為玖佰玖拾玖,但是會把800打印為捌佰零拾零,所以還是需要在switch()的case里面寫一些判斷的,這些需要讀者們去自己加一些簡單的邏輯判斷。寫這篇隨筆的原因,是因為我TM也覺得有些人寫得太復雜了,在考慮到只使用數組,循環和條件的前提下我想了這段邏輯比較合乎新手的代碼來實現轉換。其實我本來是想寫一篇java的GC機制的隨筆,但是里面涉及到的知識點有點多,只能慢慢寫,所以我決定先寫一篇關於為什么要配置java環境,還有關於在命令行使用javac和java的一些知識點。           -方法雖然笨,但是實用   zemengcheng

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM