Разбор строки валюты в Java - PullRequest
6 голосов
/ 16 мая 2011

Предположим, у меня есть строка типа "$123,456,56.25" или "123'456.67" или что-то похожее на это (с цифрами и десятичной точкой и некоторым разделителем, например , или ', или что-то еще, что предсказуемы). Мне нужно написать метод, который принимает аргумент, подобный приведенному выше, и возвращает строку типа "12345656.25" или "123456.67" соответственно.

Не могли бы вы предложить наиболее эффективный и читаемый код для достижения этой цели?

Примечание. Мне известно о том, как просматривать каждый индекс и проверять, есть ли его ретрансляторы true для Character.isDigit(charAtInedx) или if(charAtInedx == '.'). Я ищу более оптимизированное решение как с точки зрения эффективности, так и читабельности

Спасибо.

Ответы [ 2 ]

12 голосов
/ 16 мая 2011
String newStr = oldStr.replaceAll("[^\\d.]+", "")

При этом пропадет любой символ, который не является ни цифрой, ни точкой

6 голосов
/ 16 мая 2011

Если вы хотите правильно обрабатывать денежные значения, вам нужно взглянуть на класс NumberFormat , специально для вашего случая NumberFormat.parse (String) .В следующей статье также обсуждаются проблемы (и решения) обработки денег в Java:

http://www.javapractices.com/topic/TopicAction.do?Id=13

Другие связанные классы включают: Валюта и, конечно, BigDecimal .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...