如何在 android 中制作类似 000"+"000 的数字格式
How can i make a Number Format Like 000"+"000 in android
我想制作类似 000"+"000 的数字格式。规则将是 3 位数字“+”3 位数字。下面我给大家举几个例子。
我已经尝试了一些代码,然后在下面展示它们。我想我必须使用 NumberFormat class。我的代码如下。顺便说一句,我的号码最多有 6 位数字,如果号码的位数较少,则缺少的数字(将在左侧)必须为 0。
我试过了
NumberFormat numberFormat = new DecimalFormat("000'+'000");
但它给出的错误是
模式“000'+'000”中未加引号的特殊字符“0”
但是我做的时候就成功了
NumberFormat numberFormat = new DecimalFormat("'+'000");
或
NumberFormat numberFormat = new DecimalFormat("000'+'");
所以简单地说,我可以制作数字加号或加号,但我不能制作数字(3 位)-加号(3 位)
我希望得到这些输入的输出:
input: 4032
output: 004+032
input : 5
output: 000+005
input: 123450
output: 123+450
input: 10450
output: 010+450
您想要的不是十进制语法。因此,您不能使用 DecimalFormat,因为它可以处理各种本地化数字,但不能处理像您这样的任意数字。但是,您可能想要实现自己的 java.text.Format。
要不就用这种方法,以后再转成你想要的格式呢
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
如果有用请告诉我。
有技巧:将分组分隔符改为+
:
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
我想制作类似 000"+"000 的数字格式。规则将是 3 位数字“+”3 位数字。下面我给大家举几个例子。
我已经尝试了一些代码,然后在下面展示它们。我想我必须使用 NumberFormat class。我的代码如下。顺便说一句,我的号码最多有 6 位数字,如果号码的位数较少,则缺少的数字(将在左侧)必须为 0。
我试过了
NumberFormat numberFormat = new DecimalFormat("000'+'000");
但它给出的错误是
模式“000'+'000”中未加引号的特殊字符“0”
但是我做的时候就成功了
NumberFormat numberFormat = new DecimalFormat("'+'000");
或
NumberFormat numberFormat = new DecimalFormat("000'+'");
所以简单地说,我可以制作数字加号或加号,但我不能制作数字(3 位)-加号(3 位)
我希望得到这些输入的输出:
input: 4032
output: 004+032
input : 5
output: 000+005
input: 123450
output: 123+450
input: 10450
output: 010+450
您想要的不是十进制语法。因此,您不能使用 DecimalFormat,因为它可以处理各种本地化数字,但不能处理像您这样的任意数字。但是,您可能想要实现自己的 java.text.Format。
要不就用这种方法,以后再转成你想要的格式呢
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
如果有用请告诉我。
有技巧:将分组分隔符改为+
:
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