用零填充字符串的更好方法[重复]

Posted

技术标签:

【中文标题】用零填充字符串的更好方法[重复]【英文标题】:A better way of left padding a string with zeroes [duplicate] 【发布时间】:2016-08-14 02:38:30 【问题描述】:

这就是我用零填充字符串的方式:

String.format("%16s", cardTypeString.trim()).replace(' ', '0');

有没有更好的方法来做到这一点?我不喜欢.replace(' ', '0') 部分。

【问题讨论】:

【参考方案1】:
// Pad with zeros and a width of 10 chars.
String.format("%1$010d", 245)

更多详情见https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html

对不起。我的错。这仅适用于 int,不适用于 String!

【讨论】:

【参考方案2】:

你可以使用来自Apache Commons的StringUtils:

StringUtils.leftPad(cardTypeString, 16, '0');

【讨论】:

【参考方案3】:

实现你自己的PadLeft:

public static String padLeft(String value, int width, char pad) 
    if (value.length() >= width)
        return value;
    char[] buf = new char[width];
    int padLen = width - value.length();
    Arrays.fill(buf, 0, padLen, pad);
    value.getChars(0, value.length(), buf, padLen);
    return new String(buf);

见IDEONE demo。

【讨论】:

以上是关于用零填充字符串的更好方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

用零填充数字的嵌套 IF [重复]

javascript 用零填充字符串

Angular2 或 TypeScript 用零填充字符串

boost::lexical_cast int 用零填充字符串

用零填充缺失的用户输入

如何在 Batch、PyTorch 上填充零