【问题标题】:How can i make a Number Format Like 000"+"000 in android我如何在android中制作像000“+”000这样的数字格式
【发布时间】:2019-08-31 12:31:24
【问题描述】:

我想制作一个像 000"+"000 这样的数字格式。规则将是 3 位数“+”3 位数。下面我给大家举几个例子。

我已经尝试了一些代码,然后我将在下面显示它们。我想我必须使用 NumberFormat 类。我的代码如下。顺便说一句,如果号码的位数较少,我的号码最多有 6 位数字缺失的数字(将在左侧)必须为 0。

我试过了

NumberFormat numberFormat = new DecimalFormat("000'+'000");

但它给出了错误

模式“000'+'000”中未加引号的特殊字符'0'

但是我做的时候就成功了

NumberFormat numberFormat = new DecimalFormat("'+'000");

NumberFormat numberFormat = new DecimalFormat("000'+'");

所以很简单,我可以制作数字加号或加号,但我不能制作数字(3 位)-加号(3 位)

我希望为这些输入获得这些输出:

输入:4032

输出:004+032

输入:5

输出:000+005

输入:123450

输出:123+450

输入:10450

输出:010+450

【问题讨论】:

  • 一个解决方案是String format = String.format("%06s"); String result = format.substring(0, 3) + "+" + format.substring(3);

标签: java android number-formatting decimalformat


【解决方案1】:

有一个技巧:将分组分隔符更改为+

DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.getDefault());
symbols.setGroupingSeparator('+');
NumberFormat nf = new DecimalFormat("000,000", symbols);

int x = 3250;
System.out.println(nf.format(x));

结果:

003+250

或者使用这样的方法:

public static String specialFormat(int number) {
    NumberFormat nf = new DecimalFormat("000");
    return nf.format(number / 1000) + "+" + nf.format(number % 1000);
}

它分别格式化前 3 个数字和最后 3 个数字,并在中间与 + 连接。
使用它:

int x = 5023;
System.out.println(specialFormat(x));

结果:

005+023

【讨论】:

    【解决方案2】:

    您想要的不是十进制语法。因此,您不能使用 DecimalFormat,因为它处理各种本地化数字,而不是像您这样的任意数字。但是,您可能希望实现自己的 java.text.Format。

    【讨论】:

      【解决方案3】:

      如何使用这种方法,然后将其转换为您想要的格式

      generateNumbers(String val) {
          int len = val.length();
          String finalValue;
          StringBuffer sb = new StringBuffer();
          if (len < 6) {
              for (int i = 6; i > len; i--) {
                  sb.append("0");
              }
              finalValue = sb.append(val).toString();
          } else {
              finalValue = val;
          }
          System.out.println(finalValue.substring(0, 3) + "+" + finalValue.substring(3));
      }
      


      对于测试,您可以调用它

      generateNumbers("4032");
      generateNumbers("5");
      generateNumbers("123450");
      generateNumbers("10450");
      


      输出是

      004+032
      000+005
      123+450
      010+450
      

      如果有用请告诉我。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-17
        • 2020-10-14
        • 2021-07-05
        • 1970-01-01
        • 2010-10-01
        • 1970-01-01
        • 2013-04-18
        • 1970-01-01
        相关资源
        最近更新 更多