代码之家  ›  专栏  ›  技术社区  ›  sergionni

优雅地删除StringBuilder中最后一个字符串后面的“\n”分隔符

  •  17
  • sergionni  · 技术社区  · 14 年前

    StringBuilder 带“\n”,即回车分隔符:

    while (scanner.hasNextLine()){
        sb.append(scanner.nextLine()).append("\n");
    }
    

    在最后一个字符串(行)后面出现了“\n”符号。

    如何从结果中优雅地删除最后一个“\n” 字符串拼接 反对?

    7 回复  |  直到 12 年前
        1
  •  22
  •   Nikita Rybak    14 年前

    这对我一直有效

    sb.setLength(sb.length() - 1);
    

    此外,如果您认为缓冲区可能为空,请在执行此操作之前检查长度值。

        2
  •  10
  •   oksayt    13 年前

    如果使用的行数足够少,则可以将所有行放入 List<String> StringUtils.join(myList, "\n");

    另一个选择是 trim() 结果字符串。

    发现番石榴果后更新 Joiner

    Joiner.on('\n').join(myList)

        3
  •  4
  •   rsp    14 年前

    您可以生成结果,而无需删除换行符:

    String separator = "";
    while (scanner.hasNextLine()){
        sb.append(separator).append(scanner.nextLine());
        separator = "\n";
    }
    
        4
  •  3
  •   cherouvim    14 年前

    你不必删除它,你根本就不能添加它。

    while (scanner.hasNextLine()) {
        if (sb.length()>0) sb.append("\n");
        sb.append(scanner.nextLine());
    }
    
        5
  •  2
  •   Stephen Swensen    14 年前
    bool isFirst = true;
    while (scanner.hasNextLine()){
      if(!isFirst)
        sb.append("\n"));
      else
        isFirst = false;
    
      sb.append(scanner.nextLine());
    
    }
    
        6
  •  2
  •   Mikos    14 年前

    删除字符(sb.length()-1);

        7
  •  1
  •   andersoj    14 年前
    if (scanner.hasNextLine()) 
      sb.append(scanner.nextLine());
    while (scanner.hasNextLine()){
      sb.append("\n").append(scanner.nextLine());
    }