Есть ли решение для преобразования строки в денежную сумму?

Исходная строка может быть в разных форматах. Может содержать (или нет) знак доллара, может иметь такие слова, как «bn» (что означает миллиард), тысячи (s), миллион (ы), миллиард (ы), может иметь десятичные точки и разделители тысяч (запятые). Кроме того, эта строка может содержать дополнительный текст, не связанный напрямую со значением.

Я хотел бы, чтобы эта строка была преобразована в целое число.

Например строка US$ 2,864.773 million in 2014 следует преобразовать в целое число 2864733000,

Если бы можно было определить название валюты, это было бы просто идеально!

Есть ли готовые решения, такие как класс PHP или что-то еще?

2

Решение

Я бы использовал регулярное выражение, что-то вроде:

(\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)? захватывает миллион / миллиард и т. д., а ? делает это необязательным.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]