【问题标题】:How to read last word or last line in DocumenListener如何在 DocumenListener 中读取最后一个单词或最后一行
【发布时间】:2011-04-13 17:54:56
【问题描述】:

我为 JEditorPane 实现 DocumentListener(需要方法 insertUpdate(DocumentEvent e) 的帮助)。如何阅读最后一个单词或最后一行(行由 '\n' 分隔,单词由 ' ' 分隔)?

【问题讨论】:

  • 我不确定您为什么使用 JEditorPane。 JEdi​​torPanes 用于显示 HTML。 HTML 不使用行的概念。您只需添加文本,HTML 将在适当的时候包装文本。如果要强制换行,则使用
    标签。我认为您应该使用 JTextArea 或 JTextPane 来处理常规文本。

标签: java swing javax.swing.text


【解决方案1】:

Utilities 类可以与格式化的内容一起使用,例如html

public static final int getWordStart(JTextComponent c, int offs) throws BadLocationException 
public static final int getWordEnd(JTextComponent c, int offs) throws BadLocationException 

【讨论】:

  • +1,更好的解决方案,适用于任何大小的文件。您只需要知道 document.getLength() 即可获得最后一个单词的偏移量。然后你使用 document.getText(...) 方法来获取单词。如果你想要最后一行,你可以使用 getLineStart/End 方法来获取偏移量。
【解决方案2】:

要获取 JEditorPane 中的最后一行,请在 \n 上拆分编辑器中的文本,如下所示:

String text = editor.getText();
String[] lines = text.split("\n");
String lastLine = lines[lines.length-1];
System.out.println("Last line: " + lastLine);

同样,要获得最后一个单词,将最后一行在空格上分开。

【讨论】:

  • 不是一个非常有效的解决方案,尤其是对于大文件。您应该利用文档结构,因为文本已经被解析成行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-25
  • 2012-03-15
  • 1970-01-01
  • 2023-03-03
  • 2021-04-29
相关资源
最近更新 更多