Как установить пользовательский суффикс с помощью средства форматирования большого значения - PullRequest
1 голос
/ 10 июня 2019

Я хочу установить пользовательский суффикс с помощью Large Value Formatter. Суффикс по умолчанию был:

  • К за тысячу
  • м на миллион
  • б за миллиард
  • т за триллион

но я хочу сделать это на заказ как:

  • руб за тысячу
  • JT за миллион
  • м на миллиард
  • т за триллион

я пытался изменить его по умолчанию на rb, jt, m и t, но результат был просто:

  • р за тысячу, а не руб
  • J за миллион, а не JT

и у него нет проб с m и t, поскольку он содержит только 1 суффикс

private String[] mSuffix = new String[]{"", "k", "m", "b", "t"};

результат был: 812k, 8.12m, 8.12b, 8.12t

попытался изменить его на:

private String[] mSuffix = new String[]{"", "rb", "jt", "m", "t"};

результат был: 812r, 8.12j, 8.12m, 8.12t

и это когда mSuffix используется

 private String makePretty(double number) {

    String r = mFormat.format(number);

    int numericValue1 = Character.getNumericValue(r.charAt(r.length() - 1));
    int numericValue2 = Character.getNumericValue(r.charAt(r.length() - 2));
    int combined = Integer.valueOf(numericValue2 + "" + numericValue1);

    r = r.replaceAll("E[0-9][0-9]", mSuffix[combined / 3]);

    while (r.length() > mMaxLength || r.matches("[0-9]+\\.[a-z]")) {
        r = r.substring(0, r.length() - 2) + r.substring(r.length() - 1);
    }

    return r;
}

Я ожидаю, что результат был

  • 812rb
  • 8.12jt,
  • 8.12m
  • 8.12t

Заранее спасибо

1 Ответ

3 голосов
/ 10 июня 2019

Если mFormat.formatter(number); делает правильные вещи (5000.0 -> "5k"), то:

private String makePretty(double number) {

  String r = mFormat.format(number);

  if (r.indexOf("k") > 0) {
    r = r.replace("k", "rb");
  } else if (r.indexOf("m") > 0) {
    r = r.replace("m", "jt");
  } else if (r.indexOf("b") > 0) {
    r = r.replace("b", "m")
  }

  return r;
}
...