【问题标题】:My String and StringBuilder are not displaying output in console我的 String 和 StringBuilder 不在控制台中显示输出
【发布时间】:2019-11-03 20:19:53
【问题描述】:

我正在从一个 PDF 页面解析文本数据。我能够应用正则表达式(参考 stackoverflow 解决方案之一)并获得我正在寻找的文本。问题是,在每次间歇迭代时将解析的字符串附加到 StringBuilder 会在 SOPing 时显示控制台中的数据,而不是最终值 [该特定页面的整个文本数据]。我尝试了以下事情:

1) 转到窗口 > 首选项 > 运行/调试 > 控制台 取消选中“限制控制台输出”

2) 尝试在文本文件中写入相同的字符串。

3) 检查显示 3746 的字符串的长度(这意味着其中有很多数据)。

包 com.PDFReaderApp2;

private static ReentrantLock counterLock = new ReentrantLock(true);
private static Pattern PARAGRAPH = Pattern.compile("\\s*^\\s*$\\s*", Pattern.MULTILINE);
private static Pattern MULTISPACE = Pattern.compile("\\s+");
private static boolean flag = false;
private static BufferedWriter writer = null;

public static StringBuilder processString2(String args) {
    StringBuilder builder = new StringBuilder();
    String x = args;
    x = compactLines(x);
    Matcher m = Pattern.compile("\\((.*?)\\)").matcher(x);
    while (m.find()) {
        x = m.group(1);
        builder = builder.append(x);
        x = builder.toString();
        // x= x.replaceAll(System.lineSeparator(), " ");
        System.out.println("-->>  " + x);
    }

    System.out.println("is x empty?: " + x.length());
    x = builder.toString();

    return builder;
}

public static String compactLines(String source) {
    return Stream.of(PARAGRAPH.split(source)).map(para -> MULTISPACE.matcher(para).replaceAll(" "))
            .collect(Collectors.joining("\n"));
}

public void readThisPage(int pageNum) throws IOException {
    writer = new BufferedWriter(new FileWriter("C:\\Users\\bhard\\Desktop\\output.txt", true));
    InputStream inputStream = document.getPages().get(pageNum).getContents();
    String text = new String();
    text = IOUtils.toString(inputStream, StandardCharsets.UTF_8.name());
    System.out.println(text);
    StringBuilder mofo = processString2(text);
    text = mofo.toString();
    System.out.println("is text empty?: " + text.length());
    writer.write(text);
    System.out.println("text of " + pageNum + "\n " + mofo);

}

public static void main(String[] args) throws InvalidPasswordException, IOException {

    ReadPDFFile2 pdf2 = new ReadPDFFile2();
    pdf2.setFileInstance("E:\\E Books\\Novels and Story books\\Adler-Mortimer-How-To-Read-A-Book.pdf",
            "Adler-Mortimer-How-To-Read-A-Book.pdf");
    pdf2.readThisPage(3);

}

}

【问题讨论】:

    标签: java regex string stringbuilder


    【解决方案1】:

    在 writer 上调用 close() 或 flush() 方法,它应该会显示输出。 确保清理资源。

    【讨论】:

    • 太棒了。非常感谢。它现在将输出转储到文件中,但在控制台中仍然没有显示任何内容。我对此没有任何问题,只要它允许我对幻像 String 对象的数据执行进一步的字符串操作,我应该能够给出文件中的数据,对吧??
    • 我建议放置一个调试器并进入函数 processString2。数据和模式匹配可能存在问题。
    猜你喜欢
    • 2018-09-14
    • 2015-02-22
    • 1970-01-01
    • 2021-09-12
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    相关资源
    最近更新 更多