Rumah > Soal Jawab > teks badan
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
一二三四五六七八九十十一十二
淡淡烟草味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];
}
过去多啦不再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
iniAnda 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
漂亮男人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/>";
}
}
}
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
Aksara Cina secara eksplisit menyatakan susunan nombor Contohnya, 一百零一
mempunyai susunan ratusan (seratus, seratus, sepuluh, juta)
Dua
2
>>>> 二个
10
>>>> 一十
>>>> 十
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 denganseratus dan sepuluh code> Menulis Seratus Sepuluh
.... Tunggu
Berdasarkan pemikiran di atas, idea pengaturcaraan yang perlu dilukis adalah seperti berikut:
Masukkan nombor n
Peta n
映射到一个数组 tokens
上。 比如 8
变成 ["八"]
, 101
变成 ["一", "零", "一"]
kepada tatasusunan 8
menjadi ["八"]
, 101
menjadi ["一", "zero", "一"]
Tambah tahap 101
变成 ["一", "百", "十", "零", "一", "个"]
Tapis, seperti 一百十零一个
变成最简形式 一百零一
// 数字到汉字的映射表
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)
)
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);
}
....dari 1 hingga n
var main = n => {
var numbers = arrGenerator(n);
return numbers.map(toHans).map(arr2str);
}
Ujian
过去多啦不再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
伊谢尔伦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...