你如何在java中转换为字符串时留下一个零填充int ?
我基本上是在寻找以前导零填充到9999的整数(例如1 = 0001)。
你如何在java中转换为字符串时留下一个零填充int ?
我基本上是在寻找以前导零填充到9999的整数(例如1 = 0001)。
当前回答
你可以用谷歌番石榴:
Maven:
<dependency>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
<version>14.0.1</version>
</dependency>
示例代码:
String paddedString1 = Strings.padStart("7", 3, '0'); //"007"
String paddedString2 = Strings.padStart("2020", 3, '0'); //"2020"
注意:
Guava是一个非常有用的库,它还提供了许多与集合、缓存、函数习语、并发、字符串、原语、范围、IO、哈希、EventBus等相关的特性
裁判:GuavaExplained
其他回答
int x = 1;
System.out.format("%05d",x);
如果您想将格式化的文本直接打印到屏幕上。
下面是另一种将整数左侧填充为0的方法。您可以根据您的方便增加零的数量。已添加一个检查,以返回与配置的负数或大于或等于零的值相同的值。你可以根据你的要求进一步修改。
/**
*
* @author Dinesh.Lomte
*
*/
public class AddLeadingZerosToNum {
/**
*
* @param args
*/
public static void main(String[] args) {
System.out.println(getLeadingZerosToNum(0));
System.out.println(getLeadingZerosToNum(7));
System.out.println(getLeadingZerosToNum(13));
System.out.println(getLeadingZerosToNum(713));
System.out.println(getLeadingZerosToNum(7013));
System.out.println(getLeadingZerosToNum(9999));
}
/**
*
* @param num
* @return
*/
private static String getLeadingZerosToNum(int num) {
// Initializing the string of zeros with required size
String zeros = new String("0000");
// Validating if num value is less then zero or if the length of number
// is greater then zeros configured to return the num value as is
if (num < 0 || String.valueOf(num).length() >= zeros.length()) {
return String.valueOf(num);
}
// Returning zeros in case if value is zero.
if (num == 0) {
return zeros;
}
return new StringBuilder(zeros.substring(0, zeros.length() -
String.valueOf(num).length())).append(
String.valueOf(num)).toString();
}
}
输入
0
7
13
713
7013
9999
输出
0000
0007
0013
7013
9999
使用java.lang.String.format(String,Object…)
String.format("%05d", yournumber);
对于长度为5的零填充。对于十六进制输出,将d替换为“%05x”中的x。
完整的格式化选项被记录为java.util.Formatter的一部分。
找到这个例子…将测试……
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));
}
}
测试了这个和:
String.format("%05d",number);
对于我的目的,我认为这两个都可以。格式更好,更简洁。
假设你想把11打印成011
您可以使用格式化程序:“%03d”。
你可以像这样使用这个格式化器:
int a = 11;
String with3digits = String.format("%03d", a);
System.out.println(with3digits);
另外,一些java方法直接支持这些格式化器:
System.out.printf("%03d", a);