【问题标题】:Java: Filling a String up to a certain pointJava:将字符串填充到某个点
【发布时间】:2014-06-11 19:03:13
【问题描述】:

我正在做一个项目,但我被困在某个地方。我希望结果字符串的长度始终为 128 个字符。当我的字符串较短时,我想用“0”替换它。我尝试了很多方法,但都没有奏效,所以我决定在这里问它。

这是我尝试过的:

String s = "This is a String!";
if(s.length() < 128){
    s.replace(s.length(), 128, "0");
    System.out.println(s);
}

【问题讨论】:

  • String 对象是不可变的。 String#replace() 返回一个新字符串;此外,replace() 没有重载需要 3 个参数。
  • 你想在开头还是结尾填充? stackoverflow.com/questions/4469717/… 可能会有所帮助。
  • 你的代码产生的结果应该是什么?
  • 如果字符串的大小大于 128 怎么办? (你也想考虑这个条件吗?)
  • 你可以使用StringBuilder

标签: java string replace string-length


【解决方案1】:

如果你想让你的短字符串右填充零:

String s = "SomeTestString!";
if(s.length() < 128) {
   s = String.format("%-128s", s ).replace(' ', '0');
} else {
   s = s.substring(0,128);
}
System.out.println(s);

如果你想用零替换你的短字符串:

String s = "SomeTestString!";
if(s.length() < 128) {
   s = s.replace(s.length(), 128, "0");
} else {
   s = s.substring(0,128) ;
}
System.out.println(s);

如果您希望短字符串有 128 个字符 '0':

StringBuffer buf = new StringBuffer(128);
for (int i = 0; i < 128; i++) {
   buf.append("0");
}
System.out.println(buf);

是的,至少我练习了一点:)。

【讨论】:

    【解决方案2】:
    String s = "This is a String!";
    if(s.length() < 128){
       while (s.length <= 128){
          s += "0";
       }
       System.out.println(s);
    }
    

    【讨论】:

    • 虽然这会起作用,但它也会创建许多新的 String 实例(参见Immutabilety)。首选StringBuffer 或StringBuilder。
    【解决方案3】:

    这是右填充字符串的一种方法。

    public class Snippet {
    
        public static void main(String[] args) {
            int length = 128;
            String s = "This is a String!";
            System.out.println(new Snippet().rightPadString(s, length, '0'));
        }
    
        public String rightPadString(String s, int length, char c) {
            if (s.length() < length) {
                StringBuilder builder = new StringBuilder(length);
                builder.append(s);
                for (int i = s.length(); i < length; i++) {
                    builder.append(c);
                }
                s = builder.toString();
            } else {
                s = s.substring(0, length);
            }
            return s;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      • 2012-04-21
      • 2012-02-17
      • 2010-09-28
      • 2021-05-20
      • 2011-09-17
      相关资源
      最近更新 更多