从右到左解析数字字符串并隔离 1 到 3 个单独的值

问题描述 投票:0回答:2

我有一个数字字符串,我需要将其从右侧开始分成 2 组,但不能超过 3 组。

为了理解,这 3 组是“铜”、“银”和“金”,起始值是合成货币金额。例如:

10 -> 10 铜

1010 -> 10 银和 10 铜

102030 -> 10 金,20 银,30 铜

1234567891010 -> 123456789 金、10 银、10 铜

如何用 PHP 实现?

php text-parsing
2个回答
5
投票

我只需将 String 转换为 int (如here),然后进行一些算术运算。

设 x 为数字

r1 = x % 10000;
gold = x / 10000;
copper = r1 % 100;
silver = r1 / 100;

这样您就拥有了所有信息。

其中

%
表示


0
投票

使用正则表达式:

$items = array('12', '1234', '123456', '1234567891234');

foreach ($items as $item)
{
    echo $item;

    preg_match('/^(?:(?<gold>\d*)(?<silver>\d\d))?(?<copper>\d\d)$/', $item, $result);

    foreach ($result as $key => $value)
    {
        if (is_int($key))
        {
            unset($result[$key]);
        }
    }
    var_dump($result);
}
© www.soinside.com 2019 - 2024. All rights reserved.