【问题标题】:remove blank lines using java code [closed]使用java代码删除空行[关闭]
【发布时间】:2017-01-16 21:59:14
【问题描述】:

下面是我的 Java 代码,用于创建 PDF 并打印 PDF 文档中的内容。我在打印行之间有空白行,如下面的代码所示。如果打印的语句后有两个以上的空行,则只写一个空行并省略其他空行写入PDF文档。因此,如果有一两个空行,我可以按原样打印,但如果有更多空行,则删除所有多余的空行并使用 Java 代码添加一个空行。我正在使用Java 5。请提出建议。

    public static void main(String args[]) {
        Document document = null;
        FileOutputStream fos = null;

        try {
            final String prefix = "test";
            final File temporaryPDF = File.createTempFile(prefix, ".pdf");
            document = new Document(PageSize.LETTER);

            fos = new FileOutputStream(temporaryPDF);

            PdfWriter.getInstance(document, fos);
            document.open();

            Font font = new Font(Font.FontFamily.COURIER, 10);

            List<String> lines = new ArrayList<String>();
            lines.add("This is first line.");
            lines.add("This is second line.");
            lines.add(" ");
            lines.add(" ");
            lines.add(" ");
            lines.add(" ");
            lines.add("This is third printed line.");
            lines.add(" ");
            lines.add("This is fourth printed line.");
            lines.add(" ");
            lines.add(" ");
            lines.add(" ");
            lines.add("#ACC004342-123");
            lines.add(" ");
            lines.add(" ");
            lines.add(" ");
            lines.add(" ");
            lines.add(" ");
            lines.add(" ");
            lines.add("More information:");
            lines.add("This is fifth printed line.");
            lines.add("#ACC004342-123");
            lines.add("");
            lines.add("This is Sixth printed line.");
            lines.add("Some information goes here.");

            for (final String line : lines) {
                document.add(new Paragraph(12, line, font));
            }

            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
}

PS:为了更清楚起见,我再次提出了这篇文章。谢谢。

【问题讨论】:

  • 嗯,首先不要插入空行吗?要么这样,要么这个问题还不是很清楚……
  • 如果有两个以上的空行只显示两个空行。如果有的话,不要插入两个以上的空行。 @ppeterka
  • 如果一行只包含空白,你可以用String#trim()string.trim().length == 0检查
  • 我尝试了一切。如果有一个或两个空行我需要打印它们,但如果有两个以上的空行我只需要打印两个空行,我正在寻找一些有效的方法来使用 java 代码执行此操作。有什么办法吗?你能用代码回答吗,如果它有效,我可以接受你的回答。 @Jhonny007
  • 您是否正在寻找可以在 for 循环开始之前清理 lines 变量的代码?这就是你想要的看起来。也许?

标签: java pdf


【解决方案1】:

这是一个可以解决您的问题的最小答案。我确实将代码减少到必要的部分,因为我需要自己测试它并且我无权访问您使用的类。

提问时尽量将问题中的代码设为minimal,这样更容易重新创建。

public static void main(String args[]) {
    List<String> lines = new ArrayList<String>();
    lines.add("This is first line.");
    lines.add("This is second line.");
    lines.add(" ");
    lines.add(" ");
    lines.add(" ");
    lines.add(" ");
    lines.add("This is third printed line.");
    lines.add(" ");
    lines.add("This is fourth printed line.");
    lines.add(" ");
    lines.add(" ");
    lines.add(" ");
    lines.add("#ACC004342-123");
    lines.add(" ");
    lines.add(" ");
    lines.add(" ");
    lines.add(" ");
    lines.add(" ");
    lines.add(" ");
    lines.add("More information:");
    lines.add("This is fifth printed line.");
    lines.add("#ACC004342-123");
    lines.add("");
    lines.add("This is Sixth printed line.");
    lines.add("Some information goes here.");

    //count empty lines
    int emptyLineCounter = 0; 

    for (final String line : lines) {
        //when empty line increment counter, else reset counter
        if(line.trim().length() == 0) 
            emptyLineCounter++;
        else
            emptyLineCounter = 0;

        //when more then 2 empty lines are encountered move ignore line
        if(emptyLineCounter <= 2)
            System.out.println(line); //add line to document
    }
}

编辑:其他人写错答案是没有提供minimal, complete and verifiable代码的直接结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-08
    • 2015-09-10
    • 1970-01-01
    • 2017-12-13
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多