java - 固定字符串长度添加空格和删除超出的字符

标签 java string substring

上下文:

我希望有一个固定的字符串长度,因为我正在格式化输出文件,我构建了 2 个函数,它们应该根据我的字符串长度应用于字符串。

  1. 第一个函数:如果您想要一个 X 字符长的字符串,但您得到的字符串是 X-Y,这会添加空格,直到达到所需的长度,在这种特殊情况下为 Y。这似乎是正确的,它有效
  public String formatSpace(String s, int desiredlength){
    while (s.length()<desiredlength){
      s+=" ";
    }
    return s;
  }
  • 第二个函数:如果您想要一个 X 字符长的字符串,但您得到的字符串是 X+Y,则此“删除”字符直到达到所需的长度,在本例中为 Y。好像是错的。
  •   public String truncString(String s, int desiredlength){
        return s.substr(0,s.length()-desiredlenght);
      }
    
    <小时/>

    错误:

    我根据在代码的另一部分中测试的字符串长度应用这两个:

    [...]//here i built my class
    int maxlen = 60;
        [...] //here there is more code but it just collects data and I already tested fields
            if (field.length()<maxlen){
              field = formatSpace(field,maxlen);
            }else if (field.length()>maxlen){
              field = truncString(field,maxlen);
            }
    [...] //here i put string on file
    

    我得到的错误是关于字符串索引为负数,我不知道为什么,我尝试了纸上的代码(是的,我知道它很愚蠢)但它在那里工作

    为什么第二个功能不起作用? 另外,最好创建一个格式化我的字符串的函数,我应该如何制作它?

    <小时/>

    解决方案:

    感谢所有评论的人,我用我编写的这个单一函数解决了我的问题,我什至不再测试字符串,如果它们适合我的长度就可以了,否则我格式化它们:

      private String formatString(String s, int length) {
        while (s.length() < length) {
          s += " ";
        }
        return s.substring(0, length);
      }
    

    最佳答案

    substring 中的第二个参数函数是新字符串的长度。为什么你有减法? 这应该有效:

     public String truncString(String s, int desiredlength){
        return s.substr(0,desiredlenght);
      }
    

    关于java - 固定字符串长度添加空格和删除超出的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48098059/

    相关文章:

    java - 使用java中的对象com.google.api.services.gmail.model.Message读取gmail消息正文?

    excel - 使用替换功能将一个字符替换为两个

    java - 创建网络虚拟硬盘/文件系统

    Java 代码对于三角形面积返回 0

    c++ - 检查 C++ 字符串中的 int : revised: clearing cin

    string - Hackerrank `super-functional-strings` 因超时而终止

    Javascript 子字符串验证/比较

    ruby - 检查字符串是否包含 Ruby 数组中的任何子字符串

    java - 在 JSP 中 session 过期之前显示警告

    ios - 无法从 appcelerator 中的 strings.xml 获取字符串