我想分割號碼,但不知道如何做到這一點。如何在java中分割數字?
我把這個鏈接引用了。
https://stackoverflow.com/a/12297231/1395259
假設我有一個數12345678
。
使用上述鏈接我由3分割places.So輸出變爲123
456
78
。
但我想把它當作12
345
678
我希望把在形式12.345.678
拆分字符串。
任何人都可以幫助我嗎?
我想分割號碼,但不知道如何做到這一點。如何在java中分割數字?
我把這個鏈接引用了。
https://stackoverflow.com/a/12297231/1395259
假設我有一個數12345678
。
使用上述鏈接我由3分割places.So輸出變爲123
456
78
。
但我想把它當作12
345
678
我希望把在形式12.345.678
拆分字符串。
任何人都可以幫助我嗎?
java.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非常靈活,但通常我們可以使用較短的v版爲
String s = NumberFormat.getNumberInstance(Locale.GERMAN).format(12345678);
產生相同的字符串
12.345.678
不同的國家有格式化數字(和日期)不同的規則。通常,我們希望我們的方案,以國際化/本地化,並使用默認的語言環境版本
NumberFormat.getNumberInstance().format(number);
完美的解決方案。非常感謝 –
一種懶惰的方法是顛倒字符串,應用上面的方法,然後再次顛倒它。
您可以使用StringBuffer's Reverse Function,如圖Reverse each individual word of "Hello World" string with Java
12345678
87654321
876 543 21
12 345 678
我假設當然是要通過3S分裂與< 3位數組留出現在開始,而不是結束,如您鏈接的方法。
不那麼懶惰的方式將使用字符串長度來適應您鏈接的方法,以length%3
字符開頭。
使用從你的鏈接的解決方案,我會換一種說法如下(測試!):
public String[] splitStringEvery(String s, int interval) {
int arrayLength = (int) Math.ceil(((s.length()/(double)interval)));
String[] result = new String[arrayLength];
int j = s.length();
int lastIndex = result.length;
for (int i = lastIndex - 1; i > 0; i--) {
result[i] = s.substring(j - interval, j);
j -= interval;
} //Add the last bit
result[0] = s.substring(0, j);
return result;
}
這裏是一個分裂的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。也可以使用整數來表示您在字符串中的位置,而不是一遍又一遍地爲's'創建新字符串。 – Nemo64
如果它是一個字符串,請使用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();
}
}
這個版本,該方法,可以讓你任意數量分割成任何你想要的格式,只需更改將「split」變量轉換爲您想要將字符串拆分爲的格式。 (例如:將12345678拆分爲:1.1234.5.67.8意味着「拆分」必須設置爲{1,4,1,2,1})。
你想格式化一個整數,還是你實際上有一個字符串?這個數字有多長?你想要分隔符取決於語言環境嗎? –
我有整數和分裂我將它轉換成字符串 –
不,我不想單獨取決於locale.I只是想點(。) –