【问题标题】:Removing several "\r\n" or "\n" at the end of a StringBuilder in Java在 Java 中的 StringBuilder 末尾删除几个“\r\n”或“\n”
【发布时间】:2015-05-01 02:28:32
【问题描述】:

我需要在我的 StringBuilder 末尾删除几个“换行符”。

我尝试了以下代码。

while(sb.lastIndexOf("\r\n") == sb.length()){
        sb.setLength(sb.length() - 1);
}

它不工作。有人有什么建议吗?

【问题讨论】:

  • 如果你使用Java 8,我推荐StringJoiner,如果不是,考虑使用String#endsWith
  • Remove String from StringBuilder 的可能重复项 - 请参阅此问题的已接受答案,了解如何替换部分 StringBuilder 实例(使用要删除的空字符串)。

标签: java stringbuilder


【解决方案1】:

您可以检查结尾 subSequence 是否等于您想要的子字符串 ("\r\n") 并使用 setLength like 减少长度

while (sb.subSequence(sb.length() - 2, sb.length()).equals("\r\n")) {
    sb.setLength(sb.length() - 2);
}

您也可以考虑致电toString()trim()

String s = sb.toString().trim();

【讨论】:

    【解决方案2】:

    输出sb.lastIndexOf("\n\r")sb.length(),你会看到字符位置的不同。因此,while 条件不起作用。

    还要记住:\n\r 可能是 \r\n

    【讨论】:

      【解决方案3】:

      从字符串缓冲区获取字符串后,sbString.replaceAll("[\n\r]*$", "") 将为您完成这项工作

      【讨论】:

      • 你说的是Java StringBuilder吗?我没有看到任何replaceAll() 方法。
      【解决方案4】:
         StringBuilder check=new StringBuilder("i am here \n\n\n\n");
          System.out.println(check+" "+check.length());
          Boolean checkexist=true;
          while(checkexist){
               if(check.lastIndexOf("\n")==check.length());{
                  check.setLength(check.length()-1);
                  if(check.lastIndexOf("\n")==-1){
                       System.out.println(check+" "+check.length());
                      checkexist=false;
                  }                   
      
               }
      

      输出:

      我在这里

      14

      我在这里 10

      去掉字符串中的所有\n后显示字符串的长度

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-10
        • 1970-01-01
        • 2016-03-21
        • 1970-01-01
        • 2023-01-28
        • 1970-01-01
        相关资源
        最近更新 更多