如何在java中分割数字?
我正在尝试分割号码,但不知道如何分割 我引用了这个链接 假设我有一个数字如何在java中分割数字?,java,Java,我正在尝试分割号码,但不知道如何分割 我引用了这个链接 假设我有一个数字12345678 使用上面的链接,我将其拆分为3个位置。因此输出变成12345678 但是我希望它是12345678并且我希望以12.345.678的形式获取拆分的字符串 有人能帮我吗?一种懒惰的方法是反转字符串,应用上面的方法,然后再次反转 您可以使用,如中所示 当然,我假设你想要以3s分割,而一种懒惰的方法是反转字符串,应用上面的方法,然后再次反转 您可以使用,如中所示 当然,我假设您希望使用链接中的解决方案,以3s为
12345678
使用上面的链接,我将其拆分为3个位置。因此输出变成123
456
78
但是我希望它是12
345
678
并且我希望以12.345.678
的形式获取拆分的字符串
有人能帮我吗?一种懒惰的方法是反转字符串,应用上面的方法,然后再次反转 您可以使用,如中所示
当然,我假设你想要以3s分割,而一种懒惰的方法是反转字符串,应用上面的方法,然后再次反转 您可以使用,如中所示
当然,我假设您希望使用链接中的解决方案,以3s为单位拆分组,我会将其重新表述为以下内容(已测试!):
使用您链接中的解决方案,我会将其重新表述为以下内容(已测试!):
text包提供了格式化数字的所有合理选项
DecimalFormat f = new DecimalFormat("#,###");
DecimalFormatSymbols fs = f.getDecimalFormatSymbols();
fs.setGroupingSeparator('.');
f.setDecimalFormatSymbols(fs);
String s = f.format(12345678);
System.out.println(s);
输出
12.345.678
直接使用DecimalFormat非常灵活,但通常我们可以使用较短的版本
String s = NumberFormat.getNumberInstance(Locale.GERMAN).format(12345678);
它产生相同的字符串
12.345.678
不同的国家对数字(和日期)的格式有不同的规则。通常我们希望我们的程序国际化/本地化,并使用默认的语言环境版本
NumberFormat.getNumberInstance().format(number);
text包提供了格式化数字的所有合理选项
DecimalFormat f = new DecimalFormat("#,###");
DecimalFormatSymbols fs = f.getDecimalFormatSymbols();
fs.setGroupingSeparator('.');
f.setDecimalFormatSymbols(fs);
String s = f.format(12345678);
System.out.println(s);
输出
12.345.678
直接使用DecimalFormat非常灵活,但通常我们可以使用较短的版本
String s = NumberFormat.getNumberInstance(Locale.GERMAN).format(12345678);
它产生相同的字符串
12.345.678
不同的国家对数字(和日期)的格式有不同的规则。通常我们希望我们的程序国际化/本地化,并使用默认的语言环境版本
NumberFormat.getNumberInstance().format(number);
下面是一个拆分int值并以指定格式返回字符串的方法:
public static String split( int n ) {
String result = "", s = Integer.toString( n );
while ( s.length() > 3 ) {
result = s.substring( s.length() -3, s.length() ) + ((result.length() > 0)? "." + result : "" );
s = s.substring( 0, s.length() -3 );
}
return s + "." + result;
}
输入:
12345678
输出:
12.345.678
下面是一个拆分int值并以指定格式返回字符串的方法:
public static String split( int n ) {
String result = "", s = Integer.toString( n );
while ( s.length() > 3 ) {
result = s.substring( s.length() -3, s.length() ) + ((result.length() > 0)? "." + result : "" );
s = s.substring( 0, s.length() -3 );
}
return s + "." + result;
}
输入:
12345678
输出:
12.345.678
如果是字符串,请使用StringBuilder或StringBuffer。代码如下:
public class SplitNumber {
public static void main(String[] args){
int number = 12345678;
String numberStrBefore = Integer.toString(number);
StringBuffer numberStrAfter = new StringBuffer();
numberStrAfter.append(numberStrBefore.charAt(0));
numberStrAfter.append(numberStrBefore.charAt(1));
numberStrAfter.append('.');
numberStrAfter.append(numberStrBefore.charAt(2));
numberStrAfter.append(numberStrBefore.charAt(3));
numberStrAfter.append(numberStrBefore.charAt(4));
numberStrAfter.append('.');
numberStrAfter.append(numberStrBefore.charAt(5));
numberStrAfter.append(numberStrBefore.charAt(6));
numberStrAfter.append(numberStrBefore.charAt(7));
System.out.println("Number Before: " + numberStrBefore);
System.out.println("Number After: " + numberStrAfter.toString());
}
}
这里有一个方法也是一样的:
public class SplitNumber {
public static void main(String[] args){
int number = 12345678;
int[] split = {2,3,3}; //How to split the number
String numberStrAfter = insertDots(number, split);
System.out.println("Number Before: " + number);
System.out.println("Number After: " + numberStrAfter);
}
public static String insertDots(int number, int[] split){
StringBuffer numberStrAfter = new StringBuffer();
String numberStr = Integer.toString(number);
int currentIndex = 0;
for(int i = 0; i < split.length; i++){
for(int j = 0; j < split[i]; j++){
numberStrAfter.append(numberStr.charAt(currentIndex));
currentIndex++;
}
numberStrAfter.append('.');
}
numberStrAfter.deleteCharAt(numberStrAfter.length()-1); //Removing last "."
return numberStrAfter.toString();
}
}
公共类拆分编号{
公共静态void main(字符串[]args){
整数=12345678;
int[]split={2,3,3};//如何分割数字
字符串numberstratter=插入点(数字,分割);
System.out.println(“前面的编号:+编号”);
System.out.println(“后面的数字:“+numberstratter”);
}
公共静态字符串insertDots(整数编号,整数[]拆分){
StringBuffer numberstratter=新StringBuffer();
字符串numberStr=Integer.toString(数字);
int currentIndex=0;
对于(int i=0;i
使用该方法,此版本允许您将任何数字拆分为所需的任何格式,只需将“split”变量更改为要将字符串拆分为的格式。(例如:将12345678拆分为:1.1234.5.67.8意味着“拆分”必须设置为{1,4,1,2,1})。如果是字符串,请使用StringBuilder或StringBuffer。代码如下:
public class SplitNumber {
public static void main(String[] args){
int number = 12345678;
String numberStrBefore = Integer.toString(number);
StringBuffer numberStrAfter = new StringBuffer();
numberStrAfter.append(numberStrBefore.charAt(0));
numberStrAfter.append(numberStrBefore.charAt(1));
numberStrAfter.append('.');
numberStrAfter.append(numberStrBefore.charAt(2));
numberStrAfter.append(numberStrBefore.charAt(3));
numberStrAfter.append(numberStrBefore.charAt(4));
numberStrAfter.append('.');
numberStrAfter.append(numberStrBefore.charAt(5));
numberStrAfter.append(numberStrBefore.charAt(6));
numberStrAfter.append(numberStrBefore.charAt(7));
System.out.println("Number Before: " + numberStrBefore);
System.out.println("Number After: " + numberStrAfter.toString());
}
}
这里有一个方法也是一样的:
public class SplitNumber {
public static void main(String[] args){
int number = 12345678;
int[] split = {2,3,3}; //How to split the number
String numberStrAfter = insertDots(number, split);
System.out.println("Number Before: " + number);
System.out.println("Number After: " + numberStrAfter);
}
public static String insertDots(int number, int[] split){
StringBuffer numberStrAfter = new StringBuffer();
String numberStr = Integer.toString(number);
int currentIndex = 0;
for(int i = 0; i < split.length; i++){
for(int j = 0; j < split[i]; j++){
numberStrAfter.append(numberStr.charAt(currentIndex));
currentIndex++;
}
numberStrAfter.append('.');
}
numberStrAfter.deleteCharAt(numberStrAfter.length()-1); //Removing last "."
return numberStrAfter.toString();
}
}
公共类拆分编号{
公共静态void main(字符串[]args){
整数=12345678;
int[]split={2,3,3};//如何分割数字
字符串numberstratter=插入点(数字,分割);
System.out.println(“前面的编号:+编号”);
System.out.println(“后面的数字:“+numberstratter”);
}
公共静态字符串insertDots(整数编号,整数[]拆分){
StringBuffer numberstratter=新StringBuffer();
字符串numberStr=Integer.toString(数字);
int currentIndex=0;
对于(int i=0;i
使用该方法,此版本允许您将任何数字拆分为所需的任何格式,只需将“split”变量更改为要将字符串拆分为的格式。(例如:将12345678拆分为:1.1234.5.67.8意味着“拆分”必须设置为{1,4,1,2,1})。您是在尝试格式化一个整数,还是实际上有一个字符串?这个数字可能有多少长度?你想让分隔符取决于区域设置吗?我有整数,我正在将其转换为字符串。不,我不想根据区域设置将其分隔。我只想要点(.)我提到了一个链接a用于此。你是在尝试格式化整数,还是真的有字符串?这个数字可能有多少长度?你想让分隔符取决于区域设置吗?我有整数,为了拆分,我将其转换为StringNo。我不想根据区域设置将其拆分。我只想要点(.)我提到了一个链接,我正在使用它。完美的解决方案。谢谢你的完美解决方案。谢谢你,千万不要把字符串连在一起。改用StringBuilder。也可以使用整数告诉您在字符串中的位置,而不是一次又一次地为
s
创建新字符串。切勿在循环中将字符串连接在一起。改用StringBuilder。也可以使用整数