Skip to main content
Billy190417
Known Participant
April 17, 2019
Answered

Converting current selection Arabic numbers to chinese number

  • April 17, 2019
  • 2 replies
  • 1586 views

Hello everyone. in the daily work i need Converting  current selection Arabic numbers to chinese, two case.

first case:   1 to 一,  9 to 九,  19 to 一 109 to 一零九,1569 to 一五六九

the other case 1 to 一,  9 to 九,  19 to 十九 109 to 一百零九,1569 to 一千五百六十九

this is too difficuit to me write a script handle this problem. best way is two case use two script, once slove a question. thanks very much. I  appreciate for you help.

This topic has been closed for replies.
Correct answer Sunil Yadav

Hello, I like find the problem.

  1. var myNumber = "1110";
  2. alert(chineseNumber(myNumber));

change to

              var myNumber =app.selection[0].contents ;

              alert should be convert?


Try this,

var myNumber = app.selection[0].contents;

alert(chineseNumber(myNumber));

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function chineseNumber(no){

    var numbers = ['零', '一', '二', '三', '四', '五', '六', '七','八','九','十','百','(',')','千'];

    if(parseInt(no) < 10) return (numbers[parseInt(no[0])]);

    else if(parseInt(no) >= 10 && parseInt(no) < 100){

        var tempString = numbers[10]+"";

        if(parseInt(no[1]) > 0){

            if(parseInt(no[0]) > 1) tempString = numbers[parseInt(no[0])] + tempString + numbers[parseInt(no[1])];

            else tempString = tempString + numbers[parseInt(no[1])];

            }

        else if(parseInt(no[0]) > 1) tempString = numbers[parseInt(no[0])] + tempString;

        return tempString;

        }

    else if(parseInt(no) < 1000){

        var tempString = numbers[parseInt(no[0])] + numbers[11]+"";

        if(parseInt(no[1]) > 0){

            if(parseInt(no[2]) > 0){

                if(parseInt(no[1]) > 1) tempString += numbers[parseInt(no[1])] + numbers[10] + numbers[parseInt(no[2])];

                else tempString +=numbers[10] + numbers[parseInt(no[2])];

                }

            else tempString += numbers[parseInt(no[1])] + numbers[12] + numbers[10] +numbers[13];

            }

        else if(parseInt(no[2]) > 0) tempString += numbers[parseInt(no[1])] + numbers[parseInt(no[2])];

        return tempString;

        }

    else if(parseInt(no) < 10000){

        var tempString = numbers[parseInt(no[0])] + numbers[14]+"";

        if(parseInt(no[1]) > 0){

            tempString += numbers[parseInt(no[1])] + numbers[11];

            if(parseInt(no[2]) > 0){

                if(parseInt(no[2]) > 1){

                    if(parseInt(no[3]) > 0) tempString += numbers[parseInt(no[2])] + numbers[10] + numbers[parseInt(no[3])];

                    else tempString += numbers[parseInt(no[2])] + numbers[12] + numbers[10] +numbers[13];

                    }

                else{

                    if(parseInt(no[3]) > 0) tempString = tempString + numbers[10] + numbers[parseInt(no[3])];

                    else tempString += numbers[12] + numbers[10] +numbers[13];

                    }

                }

            else tempString += numbers[parseInt(no[2])] + numbers[parseInt(no[3])];

            }

        else{

            if(parseInt(no[2]) > 0){

                if(parseInt(no[2]) > 1) tempString += numbers[parseInt(no[2])] + numbers[10] + numbers[parseInt(no[3])];

                else{

                    if(parseInt(no[3]) > 0) tempString += numbers[10] + numbers[parseInt(no[3])];

                    else tempString += numbers[12] + numbers[10] +numbers[13];

                    }

                }

            else tempString += numbers[parseInt(no[1])] + numbers[parseInt(no[2])] + numbers[parseInt(no[3])];

            }

        return tempString;

        }

    }

Best

Sunil

2 replies

Inspiring
May 2, 2019

Hi Sunil

On my side, it always alert "undefined"

John

Sunil Yadav
Braniac
May 2, 2019

Change Line 2nd alert from,

alert(chineseNumber(myNumber));

to

var myChineseNumber = chineseNumber(myNumber);

And then you can use this variable wherever you want to use it as per your requirement.

Still facing any challenges then share your code what you are using.

Best

Sunil

Sunil Yadav
Braniac
April 18, 2019

Hi Billy,

Try this below code...

var myNumber = "1110";

alert(chineseNumber(myNumber));

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function chineseNumber(no){

    var numbers = ['零', '一', '二', '三', '四', '五', '六', '七','八','九','十','百','(',')','千'];

    if(parseInt(no) < 10) return (numbers[parseInt(no[0])]);

    else if(parseInt(no) >= 10 && parseInt(no) < 100){

        var tempString = numbers[10]+"";

        if(parseInt(no[1]) > 0){

            if(parseInt(no[0]) > 1) tempString = numbers[parseInt(no[0])] + tempString + numbers[parseInt(no[1])];

            else tempString = tempString + numbers[parseInt(no[1])];

            }

        else if(parseInt(no[0]) > 1) tempString = numbers[parseInt(no[0])] + tempString;

        return tempString;

        }

    else if(parseInt(no) < 1000){

        var tempString = numbers[parseInt(no[0])] + numbers[11]+"";

        if(parseInt(no[1]) > 0){

            if(parseInt(no[2]) > 0){

                if(parseInt(no[1]) > 1) tempString += numbers[parseInt(no[1])] + numbers[10] + numbers[parseInt(no[2])];

                else tempString +=numbers[10] + numbers[parseInt(no[2])];

                }

            else tempString += numbers[parseInt(no[1])] + numbers[12] + numbers[10] +numbers[13];

            }

        else if(parseInt(no[2]) > 0) tempString += numbers[parseInt(no[1])] + numbers[parseInt(no[2])];

        return tempString;

        }

    else if(parseInt(no) < 10000){

        var tempString = numbers[parseInt(no[0])] + numbers[14]+"";

        if(parseInt(no[1]) > 0){

            tempString += numbers[parseInt(no[1])] + numbers[11];

            if(parseInt(no[2]) > 0){

                if(parseInt(no[2]) > 1){

                    if(parseInt(no[3]) > 0) tempString += numbers[parseInt(no[2])] + numbers[10] + numbers[parseInt(no[3])];

                    else tempString += numbers[parseInt(no[2])] + numbers[12] + numbers[10] +numbers[13];

                    }

                else{

                    if(parseInt(no[3]) > 0) tempString = tempString + numbers[10] + numbers[parseInt(no[3])];

                    else tempString += numbers[12] + numbers[10] +numbers[13];

                    }

                }

            else tempString += numbers[parseInt(no[2])] + numbers[parseInt(no[3])];

            }

        else{

            if(parseInt(no[2]) > 0){

                if(parseInt(no[2]) > 1) tempString += numbers[parseInt(no[2])] + numbers[10] + numbers[parseInt(no[3])];

                else{

                    if(parseInt(no[3]) > 0) tempString += numbers[10] + numbers[parseInt(no[3])];

                    else tempString += numbers[12] + numbers[10] +numbers[13];

                    }

                }

            else tempString += numbers[parseInt(no[1])] + numbers[parseInt(no[2])] + numbers[parseInt(no[3])];

            }

        return tempString;

        }

    }

Best

Sunil

Billy190417
Known Participant
April 19, 2019

I'm sorry to say it doesn't solved the problem。

Sunil Yadav
Braniac
April 19, 2019

I've updated the code now.

I have checked on my local from number from 0-9999.

It is working fine.

Check it again

Provide me those numbers on which code is not working...

Best

Sunil