itsource

Java에서 긴 정수를 구분 없이 문자열로 포맷하려면 어떻게 해야 합니까?

mycopycode 2022. 9. 17. 09:57
반응형

Java에서 긴 정수를 구분 없이 문자열로 포맷하려면 어떻게 해야 합니까?

간단한 질문입니다만, 여기서 질문하는 것은, 다음의 문서를 이해하려고 하는 것보다, 아마 더 간단할 것입니다.MessageFormat:

long foo = 12345;
String s = MessageFormat.format("{0}", foo);

관측치는 "12,345"입니다.

바람직한 값은 "12345"입니다.

MessageFormat.format("{0,number,#}", foo);

그냥 사용하다

국제화 등 「실제」패턴을 하려고 할 때, 조금 고생했습니다.특히 출력은 표시되는 값에 따라 달라지는 "선택" 형식을 사용해야 합니다.java.text.ChoiceFormat를 위한 것입니다.

다음은 이 작업을 수행하는 방법의 예입니다.

    MessageFormat fmt = new MessageFormat("{0,choice,0#zero!|1#one!|1<{0,number,'#'}|10000<big: {0}}");

    int[] nums = new int[] {
            0,
            1,
            100,
            1000,
            10000,
            100000,
            1000000,
            10000000
    };

    Object[] a = new Object[1];
    for(int num : nums) {
        a[0] = num;
        System.out.println(fmt.format(a));
    }

이것에 의해, 다음과 같은 출력이 생성되므로, 같은 타입의 것을 실현하려고 하는 다른 사람에게도 도움이 되었으면 합니다.

zero!
one!
100
1000
10000
big: 100,000
big: 1,000,000
big: 10,000,000

보시는 바와 같이 "choice" 형식을 사용하면 전달되는 값에 따라 사용할 형식의 유형을 선택할 수 있습니다.작은 숫자는 텍스트로 대체할 수 있습니다(원래 값은 표시되지 않음).중간 크기의 숫자는 그룹 구분 기호(쉼표 없음) 없이 표시됩니다.가장 큰 숫자에도 쉼표가 포함되어 있습니다.분명히, 이것은 완전히 의도된 예로서 다음과 같은 유연성이 있습니다.java.text.MessageFormat.

인용된 내용에 대한 주의사항#형식 텍스트: 양쪽에서ChoiceFormat그리고.MessageFormat사용 중이고 두 메타캐릭터 사이에 충돌이 있습니다. ChoiceFormat사용하다#포맷 엔진이 예를 들어, 예를 들어, 포맷 엔진이 그것을 알 수 있도록 본질적으로 "유효"를 의미하는 메타문자로써1#one!우리는 비교하고 있다{0}와 함께1그리고 만약 그들이 동등하다면, 그것은 특정한 "선택"을 사용합니다.

그렇지만#또 다른 의미가 있다MessageFormat그리고 그건 메타문자로써 의미가 있습니다.DecimalFormat: "숫자를 여기에 입력한다"는 의미의 메타 문자입니다.

왜냐하면 이게...ChoiceFormat문자열,#인용할 필요가 있습니다.언제ChoiceFormat스트링의 해석은 완료됩니다.이러한 따옴표는 보조양식을 전달하면 삭제됩니다.MessageFormat(그 후 로 넘어갑니다.DecimalFormat).

그래서 사용할 때{0,choice,...}, 당신은 그것들을 인용할 필요가 있다.#캐릭터, 그리고 다른 것들도요.

대체 수단으로서String.format그리고.java.util.Formatter당신에게도 도움이 될 수 있어요

가장 빠른 방법은

long foo = 12345;
String s = ""+foo;

다음을 시도해 보십시오.

String s = new Long(foo).toString();

언급URL : https://stackoverflow.com/questions/1942118/how-do-i-format-a-long-integer-as-a-string-without-separator-in-java

반응형