Добавить в строку пробелы каждые 3 символа

Рейтинг: 2Ответов: 2Опубликовано: 03.11.2014
Double tCountDouble = Double.parseDouble(String.valueOf(recieveTCount));
Double towPrDouble = Double.parseDouble(towPr);
Double sumTaskDouble = towPrDouble * tCountDouble;
String sumTask = String.valueOf(sumTaskDouble);

А потом уже sumTask идет в TextView.

tv.setText(sumTask);

Но так как sumTask - результат умножения, то итог выходит 1234.0 или 1234.98. Нужно целую часть разбить.

Нужно получить из результата 7845.0 следующий - 7 845.0

Ответы

▲ 4Принят
DecimalFormat df = new DecimalFormat();
df.setGroupingUsed(true);
df.setGroupingSize(3);

DecimalFormatSymbols decimalFormatSymbols = getDecimalFormatSymbols();
decimalFormatSymbols.setDecimalSeparator('.');
decimalFormatSymbols.setGroupingSeparator(' ');

df.setDecimalFormatSymbols(decimalFormatSymbols);
String sample = df.format(1023.3443d)
▲ 3

А я вот такой велосипед соорудил:

String sumTask = "7123261836287368246192391273845.0";
    //сначала ставим первый пробел перед точкой.
    //находим индекс точки в строке
    int pointPosition = sumTask.indexOf(".");
    //вставим первый пробел, разделив строку на две части (до и после точки) и склеив обратно.
    sumTask = sumTask.substring(0, pointPosition - 3) + " " + sumTask.substring(pointPosition - 3);
    //теперь от пробела к началу строки ставим остальные пробелы
    for (int i = 0; i < pointPosition / 3; i++)
    {
        //находим последний вставленный пробел
        int lastSpacePosition = sumTask.indexOf(" ");
        //проверяем, не выйдем ли мы за пределы строки, вставляя новый. Если да - завершаем цикл.
        if((lastSpacePosition - 3)>0)
        {
            sumTask = sumTask.substring(0, lastSpacePosition - 3) + " " + sumTask.substring(lastSpacePosition - 3);
        }
        else
        {
            break;
        }
    }
    System.out.println(sumTask);

Выведет: 7 123 261 836 287 368 246 192 391 273 845.0

Ответ @Andreich, конечно, элегантнее, но я отвечать начал ещё до публикации его ответа)