有什么解决方案可以将字符串转换为金额吗?
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 等,?
使其可选。
初始字符串可以有多种不同的格式。可以包含(或不包含)美元符号,可以有像 '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 等,?
使其可选。