Rumah  >  Soal Jawab  >  teks badan

php - Soalan temu bual, tukar nombor dalam lingkungan 100 ke dalam bahasa Cina..

Cara menukar nombor dengan cepat kepada teks
Sebagai contoh, 1 => satu, 2=> dua, ..., 15=》lima belas
Apa yang sedang saya fikirkan ialah untuk menyimpan aksara Cina ke dalam tatasusunan

$arr = ['一','二','三','四','五','六','七','八','九','十'];

Tetapi ini terlalu menyusahkan Bagaimana untuk menukar nombor input ke dalam bahasa Cina?

Keputusan akhir adalah seperti berikut:
Input 12
Output

 一二三四五六七八九十十一十二
PHP中文网PHP中文网2683 hari yang lalu939

membalas semua(6)saya akan balas

  • 淡淡烟草味

    淡淡烟草味2017-06-14 10:52:09

    <?php
            $number=57;
            $arr=array(
    
                    '1'    =>    '一',
                    '2'    =>    '二',
                    '3'    =>    '三',
                    '4'    =>    '四',
                    '5'    =>    '五',
                    '6'    =>    '六',
                    '7'    =>    '七',
                    '8'    =>    '八',
                    '9'    =>    '九',
                    '10'    =>    '十',
    
                );
            if($number>10){
                //倍数
                $bs    =    (int)($number/10);
                //余数
                $ys    =    $number%10;
                echo $arr[$bs].$arr[10].$arr[$ys];
    
            }else{
                echo $arr[$number];
    
            }
    
        

    balas
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-14 10:52:09

    Jika anda boleh menerangkan proses penukaran digital dengan jelas dalam perkataan, maka menulis kod ialah proses terjemahan.

    Algoritma sebenarnya hanyalah logik perniagaan dengan logik perniagaan yang sangat pelik Fokusnya adalah untuk menganalisis logik perniagaan

    ini

    Anda boleh menukar angka Arab kepada angka Cina walaupun sebelum anda menamatkan sekolah rendah Anda mesti mempunyai kaedah dalam fikiran anda untuk menyelesaikan proses penukaran ini. Jadi fokus penyiasatan di sini ialah abstraksiproses masalah. Untuk menjadi abstrak dan tepat, anda mesti terlebih dahulu mempunyai analisis dan pemahaman yang komprehensif tentang masalah itu sendiri dan mengetahui peraturannya. Dalam proses penukaran digital, bila 0 dipanggil sepuluh dan bila dipanggil sifar. Proses ini sangat semula jadi dalam fikiran bahawa ia masih memerlukan sejumlah keupayaan untuk menganalisis keadaannya dan mengetahui peraturannya.

    Saya mengesyorkan artikel ini Analisis pada permulaan artikel adalah proses abstraksi, yang sangat penting untuk pengaturcaraan

    balas
    0
  • 漂亮男人

    漂亮男人2017-06-14 10:52:09

    $setnumber = 99;
            $chiNum = array('十','一','二','三','四','五','六','七','八','九','十');
            if($setnumber < 100 && $setnumber >= 1) {
                for($i = 1;$i<=$setnumber;$i++) {
                    $setstrnumber = (string)$i;
                    $count = strlen($setstrnumber);
                    if($count == 1) {
                        echo $chiNum[$i]."<br/>"; 
                    } else {
                        $setchinum = '';
                        if($setstrnumber[0] != 1) {                      
                            $setchinum .= $chiNum[$setstrnumber[0]];
                        }
                        $setchinum .= $chiNum[0];
                        
                        if(intval($setstrnumber[1]) != 0) {
                            $setchinum .= $chiNum[$setstrnumber[1]];
                        }
                        echo $setchinum."<br/>";
                    }
                }
            }

    balas
    0
  • PHP中文网

    PHP中文网2017-06-14 10:52:09

    Cara menukar nombor dengan cepat kepada teks
    Sebagai contoh, 1 => satu, 2=> dua, ..., 15=》lima belas
    Apa yang sedang saya fikirkan ialah untuk menyimpan aksara Cina ke dalam tatasusunan

    $arr = ['一','二','三','四','五','六','七','八','九','十'];

    Tetapi ini terlalu menyusahkan Bagaimana untuk menukar nombor input ke dalam bahasa Cina?

    Keputusan akhir adalah seperti berikut:
    Input 12
    Output

    一二三四五六七八九十十一十二

    Berikut adalah pelaksanaan JavaScript

    Perhatikan perwakilan berangka aksara Cina

    Aksara Cina secara eksplisit menyatakan susunan nombor Contohnya, 一百零一 mempunyai susunan ratusan (seratus, seratus, sepuluh, juta)

    .

    2 >>>> Dua 2 >>>> 二个
    10 >>>> 一十 >>>> 10 >>>> > kod> >>>>

    16 >>>> 一十 六个 >>>> 十六

    105 >>>> 一百 零十 五个 >>>> 一百零五

    1024 >>>> 一千 零百 二十 四个 >>>> 一千零二十四

    Anda boleh melihat bahawa perwakilannya boleh dilihat sebagai bentuk 值 + 阶.

    Selain itu, apabila syarat berikut dipenuhi 需要省略阶或者值

    10 sepadan dengan 十十 dan ditulis sebagai 10 对应 一十 写作
    110 对应 一百一十零个 写作 一百一十110 sepadan dengan seratus dan sepuluh code> Menulis Seratus Sepuluh
    .... Tunggu

    Berdasarkan pemikiran di atas, idea pengaturcaraan yang perlu dilukis adalah seperti berikut:

    1. Masukkan nombor n

    2. Peta n 映射到一个数组 tokens 上。 比如 8 变成 ["八"], 101 变成 ["一", "零", "一"] kepada tatasusunan token. Contohnya, 8 menjadi ["八"], 101 menjadi ["一", "zero", "一"]

    3. Tambah tahap 101 变成 ["一", "百", "十", "零", "一", "个"]

    4. Tapis, seperti Seratus satu ke dalam bentuk termudah 一百十零一个 变成最简形式 一百零一

    Fungsi alat

    // 数字到汉字的映射表 
    var mapHans = ['零', '一','二','三','四','五','六','七','八','九','十'];
    
    // 用 n 得到汉字 输入 0 得到 '零'
    var getHans = n => mapHans[n]; 
    
    // 数字长度到汉字数级的映射表 
    var mul = ['十', '百', '千', '万']
    
    // ['i', 'love', 'my', 'wife'] >>>> ilovemywife 
    var arr2str = arr => arr.join(''); 
    
    // 输入 5 产生 [1, 2, 3, 4, 5]
    var arrGenerator = n => (
        new Array(n).fill(0).map((e, idx) => idx + 1)
    )

    Tercapai

    Pertama dilaksanakan 大于 10数字映射到汉字的数制 pada

    Sebagai contoh, masukkan 101 untuk kembali 101 返回 一百零一

    Ia akan menjadi lebih pantas untuk menggunakan fungsi alat yang ditulis di atas

    var toHans = n => {
        // 比如输入 101 返回 ['一', '零', '一']
        var tokens = n.toString().split('').map(getHans); 
        
        // 对数阶的处理  如果上一步得到 ['一', '零', '一'] 
        // 那么at就是 ['百', '十']
        var at = mul.slice(0, tokens.length - 1).reverse();   
        
        // 归约 
        return tokens.reduce((acc, cur) => {
            acc.push(cur); 
            acc.push( at.shift() )
            
            return acc; 
            
            // 这个reduce将会把 tokens 和 at 耦合在一块 
            // ['一', '零', '一']  和 ['百', '十'] 耦合就是: 
            // ['一', '百', '零', '十', '一', undefined]
            // 下一步的两个 filter 就是要剔除多余的项 
        }, []).filter(e => e !== undefined).filter((e, idx, its) => {
            if (e === '零'){
                if (idx === its.length - 1) {
                    // 针对 10 >>>> [一 十 零] 这种情况
                    return false; 
                } else {
                    // 针对 101 >>>> [一 百 零 十 一] 这种情况 
                    its[idx + 1] = null;
                }
            } else if (idx === 0 && e === '一' && its[idx + 1] === '十'){
                // 针对 12 >>>> [一 十 二] 这种情况 
                return false; 
            }
            // 下面还可以再添加。。 不过应该没了。
            return e; 
        }); 
    };

    Ujian mudah Ujian penukaran 2 4 6 8 16 32 ... 成 十六 三十二 ...

    // 2 的 n 次方  
    var twotwotwo = n => (
        new Array(n).fill(2).reduce((acc, cur, idx) => {
            acc = acc * cur; 
            return acc; 
        }, 1)
    )
    
    // 打印机 
    var logger = (item, idx) => console.log(`第 ${idx + 1} 个:`, item); 
    
    // test code 
    function test4toHans(n) {
        var res = arrGenerator(n).map(twotwotwo).map(toHans).map(arr2str); 
        res.forEach(logger); 
    }

    Melintasi nombor

    ....dari 1 hingga n

    var main = n => {
        var numbers = arrGenerator(n); 
        
        return numbers.map(toHans).map(arr2str); 
    } 

    Ujian


    balas
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-14 10:52:09

    https://github.com/wilon/php-...

    Nombor PHP ditukar kepada huraian aksara Cina, dan RMB ditulis dengan huruf besar

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-06-14 10:52:09

    Menyokong ratusan bilion nombor Mengubah suai tatasusunan ws boleh dikembangkan secara tidak terhingga Mengubah suai tatasusunan cns kepada Cina Tradisional boleh digunakan untuk menggunakan modal RMB

    <?php
    
    function IntToString($num)
    {
        $cns = ['零','一','二','三','四','五','六','七','八','九'];
    
        $ws = ['','十','百','千','万','十','百','千','亿','十','百','千'];
    
        $str = '';
        foreach (array_reverse(str_split((string)$num,1)) as $key => $value) 
            $str .= $ws[$key].$cns[$value];
        $temp = '';//反转字符串
        for($i = strlen($str)-1; $i>=0; $i--)
            $temp .= mb_substr($str,$i,1,'utf-8');
    
        return $temp;
    }
    
    echo IntToString(231231251237);
    ////二千三百一十二亿三千一百二十五万一千二百三十七

    Dilampirkan ideanya

    /a/11...

    balas
    0
  • Batalbalas