金额大小写转化、阿拉伯数字转大写数字,大写数字转阿拉伯数字

本文介绍两种将中文大写金额转换为阿拉伯数字的方法:一种使用str_replace函数实现,另一种通过数组下标完成。同时对比了两种方法的性能差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题:请写个程序,将类似下面的大写金额转化为阿拉伯数字。
大写金额样例:玖仟伍佰零玖亿壹佰零玖万玖仟伍佰壹拾捌元整。

实现方式:

1、先来一个看起来比较高大上的有技巧的更适合装逼的一种方式:利用函数 str_replace 来实现

$a = "玖仟伍佰零玖亿壹佰零玖万玖仟伍佰壹拾捌元整";
$s = str_replace(array('壹','贰','叁','肆','伍','陆','柒','捌','玖','零','仟','佰','亿','整','元','拾','万'), array(1,2,3,4,5,6,7,8,9,0,'','','','','','',''), $a);
echo $s;
这个方法虽然看起来比较高大上,但是str_replace的性能是公认的差。

2、换一种性能相对好很多的做法,利用数组下标来实现。

$str = "玖仟伍佰零玖亿壹佰零玖万玖仟伍佰壹拾捌元整";
$capital = array('壹','贰','叁','肆','伍','陆','柒','捌','玖','零');
$relationship = array('壹' => 1,'贰' => 2,'叁' => 3,'肆' => 4,'伍' => 5,'陆' => 6,'柒' => 7,'捌' => 8,'玖' => 9,'零' => 0);
$letter = '';
for ($i=0; $i<mb_strlen($str); $i++) {
    $s = mb_substr($str, $i, 1);
    if (in_array($s, $capital)) {
        $letter .= $relationship[$s];
    }
}
echo $letter;

以上是我列出来的两个解决方案。

下面列几个涉及的相关函数

1、字符串切割成数组    explode str_split

2、子字符串替换    str_replace  这个最经常用的是敏感词过滤 之后详细说。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值