it-swarm.com.de

Wie kann ich eine Ganzzahl links mit Nullen auffüllen?

Wie können Sie ein int mit Nullen belassen, wenn Sie in ein String in Java konvertieren?

Grundsätzlich möchte ich ganze Zahlen bis zu 9999 mit führenden Nullen auffüllen (z. B. 1 = 0001).

944
Omar Kooheji

Verwenden Sie Java.lang.String.format(String,Object...) wie folgt:

_String.format("%05d", yournumber);
_

ersetzen Sie für die hexadezimale Ausgabe das d durch ein x wie in _"%05x"_.

Die vollständigen Formatierungsoptionen sind als Teil von Java.util.Formatter dokumentiert.

1606
Yoni Roit

Wenn Sie aus irgendeinem Grund vor 1.5 Java verwenden, können Sie es mit der Apache Commons Lang-Methode versuchen

org.Apache.commons.lang.StringUtils.leftPad(String str, int size, '0')
108
Boris Pavlović

Angenommen, Sie möchten 11 als 011 drucken.

Sie können einen Formatierer verwenden: "%03d".

enter image description here

Sie können diesen Formatierer wie folgt verwenden:

int a = 11;
String with3digits = String.format("%03d", a);
System.out.println(with3digits);

Alternativ unterstützen einige Java Methoden direkt diese Formatierer:

System.out.printf("%03d", a);
97
bvdb

Fand dieses Beispiel ... Wird testen ...

import Java.text.DecimalFormat;
class TestingAndQualityAssuranceDepartment
{
    public static void main(String [] args)
    {
        int x=1;
        DecimalFormat df = new DecimalFormat("00");
        System.out.println(df.format(x));
    }
}

Getestet dies und:

String.format("%05d",number);

Beide funktionieren, für meine Zwecke denke ich, dass String.Format besser und prägnanter ist.

27
Omar Kooheji

Wenn Leistung in Ihrem Fall wichtig ist, können Sie dies mit weniger Aufwand selbst tun als mit der Funktion String.format:

/**
 * @param in The integer value
 * @param fill The number of digits to fill
 * @return The given value left padded with the given number of digits
 */
public static String lPadZero(int in, int fill){

    boolean negative = false;
    int value, len = 0;

    if(in >= 0){
        value = in;
    } else {
        negative = true;
        value = - in;
        in = - in;
        len ++;
    }

    if(value == 0){
        len = 1;
    } else{         
        for(; value != 0; len ++){
            value /= 10;
        }
    }

    StringBuilder sb = new StringBuilder();

    if(negative){
        sb.append('-');
    }

    for(int i = fill; i > len; i--){
        sb.append('0');
    }

    sb.append(in);

    return sb.toString();       
}

Leistung

public static void main(String[] args) {
    Random rdm;
    long start; 

    // Using own function
    rdm = new Random(0);
    start = System.nanoTime();

    for(int i = 10000000; i != 0; i--){
        lPadZero(rdm.nextInt(20000) - 10000, 4);
    }
    System.out.println("Own function: " + ((System.nanoTime() - start) / 1000000) + "ms");

    // Using String.format
    rdm = new Random(0);        
    start = System.nanoTime();

    for(int i = 10000000; i != 0; i--){
        String.format("%04d", rdm.nextInt(20000) - 10000);
    }
    System.out.println("String.format: " + ((System.nanoTime() - start) / 1000000) + "ms");
}

Ergebnis

Eigene Funktion: 1697ms

String.format: 38134ms

18
das Keks

Sie können Google Guava verwenden:

Maven:

<dependency>
     <artifactId>guava</artifactId>
     <groupId>com.google.guava</groupId>
     <version>14.0.1</version>
</dependency>

Beispielcode:

String paddedString1 = Strings.padStart("7", 3, '0'); //"007"
String paddedString2 = Strings.padStart("2020", 3, '0'); //"2020"

Hinweis:

Guava ist eine sehr nützliche Bibliothek, die auch viele Funktionen bietet, die sich auf Collections, Caches, Functional idioms, Concurrency, Strings beziehen. Primitives, Ranges, IO, Hashing, EventBus usw

Ref: GuavaExplained

15
Tho

Probier diese:

import Java.text.DecimalFormat; 

DecimalFormat df = new DecimalFormat("0000");
String c = df.format(9);   // 0009
String a = df.format(99);  // 0099
String b = df.format(999); // 0999
8
Brijesh Patel

Obwohl viele der oben genannten Ansätze gut sind, müssen wir manchmal sowohl Ganzzahlen als auch Gleitkommazahlen formatieren. Wir können dies verwenden, insbesondere wenn wir eine bestimmte Anzahl von Nullen links und rechts von Dezimalzahlen auffüllen müssen.

import Java.text.NumberFormat;  
public class NumberFormatMain {  

public static void main(String[] args) {  
    int intNumber = 25;  
    float floatNumber = 25.546f;  
    NumberFormat format=NumberFormat.getInstance();  
    format.setMaximumIntegerDigits(6);  
    format.setMaximumFractionDigits(6);  
    format.setMinimumFractionDigits(6);  
    format.setMinimumIntegerDigits(6);  

    System.out.println("Formatted Integer : "+format.format(intNumber).replace(",",""));  
    System.out.println("Formatted Float   : "+format.format(floatNumber).replace(",",""));  
 }    
}  
3
Deepak
int x = 1;
System.out.format("%05d",x);

wenn Sie den formatierten Text direkt auf dem Bildschirm ausdrucken möchten.

2
Shashi

Verwenden Sie die Klasse DecimalFormat wie folgt:

NumberFormat formatter = new DecimalFormat("0000"); //i use 4 Zero but you can also another number
System.out.println("OUTPUT : "+formatter.format(811)); 

OUTPUT: 0000811

1
Shomu

Sie müssen einen Formatierer verwenden. Der folgende Code verwendet NumberFormat

    int inputNo = 1;
    NumberFormat nf = NumberFormat.getInstance();
    nf.setMaximumIntegerDigits(4);
    nf.setMinimumIntegerDigits(4);
    nf.setGroupingUsed(false);

    System.out.println("Formatted Integer : " + nf.format(inputNo));

Ausgabe: 0001

0
Jobin Joseph

Überprüfe meinen Code, der für Integer und String funktioniert.

Angenommen, unsere erste Zahl ist 2. Und wir möchten Nullen hinzufügen, damit die Länge der letzten Zeichenfolge 4 beträgt. Dazu können Sie folgenden Code verwenden

    int number=2;
    int requiredLengthAfterPadding=4;
    String resultString=Integer.toString(number);
    int inputStringLengh=resultString.length();
    int diff=requiredLengthAfterPadding-inputStringLengh;
    if(inputStringLengh<requiredLengthAfterPadding)
    {
        resultString=new String(new char[diff]).replace("\0", "0")+number;
    }        
    System.out.println(resultString);
0
Fathah Rehman P