1

I am trying to split number but don't know how to do this.

I referred this link.

https://stackoverflow.com/a/12297231/1395259

Suppose I have a number 12345678.

using above link I am splitting by 3 places.So the output becomes 123 456 78.

But I want it as 12 345 678 And I want to take the string that was split in the form 12.345.678 .

Can anybody help me please??

4

5 に答える 5

10

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 を直接使用することは非常に柔軟ですが、通常は短いバージョンを使用できます

String s = NumberFormat.getNumberInstance(Locale.GERMAN).format(12345678);

同じ文字列を生成する

12.345.678

国によって、数値 (および日付) の書式設定に関するルールが異なります。通常、プログラムを国際化/ローカライズし、デフォルトのロケール バージョンを使用する必要があります。

NumberFormat.getNumberInstance().format(number);
于 2013-01-24T07:22:38.980 に答える
2

One lazy way is to reverse the string, apply above method, and then reverse it again.

You can use StringBuffer's Reverse Function, as shown in Reverse each individual word of "Hello World" string with Java

12345678

87654321

876 543 21

12 345 678

I am assuming of course that you want to split by 3s and the group with <3 digits left appears in the start rather than the end as in the method you link.

The not so lazy way would be to use string length to adapt the method you link to start with length%3 characters.

于 2013-01-24T07:10:03.170 に答える
0

Using the solution from your link i would rephrase that as following (TESTED!):

  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;
  }  
于 2013-01-24T07:14:51.557 に答える
0

String の場合は、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();
    }
}

このバージョンでは、メソッドを使用して、任意の数値を任意の形式に分割できます。「分割」変数を、文字列を分割したい形式に変更するだけです。(例: 12345678 を 1.1234.5.67.8 に分割すると、「分割」を {1,4,1,2,1} に設定する必要があります)。

于 2013-01-24T07:45:50.403 に答える
0

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
于 2013-01-24T07:34:32.283 に答える