您的位置:首页 > 其它

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

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


实现方式:

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  这个最经常用的是敏感词过滤 之后详细说。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息