有什么解决方案可以将字符串转换为金额吗?

Is there any solution to convert string to money amount?

初始字符串可以有多种不同的格式。可以包含(或不包含)美元符号,可以有像 'bn'(意思是十亿)、thousand(s)、million(s)、billion(s) 这样的词,可以有小数点和千位分隔符(逗号)。此外,此字符串可以包含不直接连接到值的其他文本。

我希望将此字符串转换为整数。

例如字符串 US$ 2,864.773 million in 2014 应转换为整数 2864733000

要是能检测到币名就完美了!

是否有现成的解决方案,例如 PHP class 之类的?

我会使用正则表达式,例如:

(\w*$)\s*([0-9,.]+)\s+(thousand|million|billion|bn)?

这将捕获货币和价值。 PHP:

if (preg_match('/(\w*$)\s*([0-9,.]+)\s+(thousand|million|billion|bn)?/i', $input, $matches)) {
    $currency = $matches[1];
    $value = str_replace(',', $matches[2]);
    $multiplier = null;
    if (isset($matches[3])) {
        $multiplier = $matches[3];
    }
}

稍微解释一下正则表达式:

(\w*$) 捕获货币/符号

\s* 允许货币和值之间的任何空格

([0-9,.]+) 捕获值

(thousand|million|billion|bn)? 捕获 million/billion 等,? 使其可选。