Как использовать Java или Groovy printf для добавления разделителя тысяч в строку - PullRequest
0 голосов
/ 19 января 2010

В Java мне нужно добавить разделитель тысяч к десятичному числу, отформатированному как String . Однако я не хочу разделитель миллионов или миллиардов ... просто разделитель тысяч с сохранением существующей дробной части числа.

9 == 9

999,999 * == 999,999

9,999 == 9999

999999,999,999 == 999999999,999

Мне не нужно строго использовать printf, но преобразование должно быть максимально быстрым.

Тип входа и выхода должен быть Строка .

Спасибо!

Ответы [ 4 ]

2 голосов
/ 19 января 2010

Во-первых, эта проблема не так проста, как кажется, поскольку разделитель тысяч не всегда является запятой и зависит от локали пользователя.В некоторых случаях это фактически период, который может вызвать проблемы с любым кодом, который вы пишете для манипуляций со строками.

Если вы хотите соблюдать локаль пользователя, то требуется более продуманный подход, с другой стороны, если вы просто хотите учесть этот конкретный случай и не заботиться о настройках локали, тогда выпопробуйте что-то вроде этого:

String s = "99999999.999";
s.replaceFirst("^(\\d+)(\\d{3})(\\.|$)", "$1,$2$3");
0 голосов
/ 19 февраля 2010
def test='6816843541.5432'
index = test.indexOf('.')
test = test.substring(0,index - 3 ) + ',' + test.substring(index-3,test.size())
println test
0 голосов
/ 22 января 2010

java.text.NumberFormat - это то, что вам нужно.

визит http://java.sun.com/j2se/1.4.2/docs/api/java/text/NumberFormat.html

0 голосов
/ 19 января 2010

Лучшее решение на данный момент:

return text.replaceFirst ("^ (\ d +) (\ d {3}) (\. | $)", "$ 1, $ 2 $ 3");

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