2

这是一个具有挑战性的问题!

让我首先告诉你我的场景我是如何实现一个问题的解决方案的。

我正在阅读一个日志文件并将其显示在 JTextArea 上。日志文件是 cp037 字符编码的。我正在从日志文件中读取每个文件作为字节流或字节数组并显示它。无论如何,我设法通过 cp037 字符编码在 JTextArea 中正确显示文本。

现在,用户可以在 JTextArea 中选择一组字符。我想要的只是用户所选文本的第一个字符的位置,距离最近的特殊字符“+”(它在 cp037 中的字符代码是 4E),它在所选文本之前。该字符可能出现在 JTextArea 中的多个位置。

在简单的句子中,我想要来自近端“+”的第一个字符位置(用户选择的文本),这应该发生在用户选择的文本之前。

PS:cp037 是一种字符编码方案,由 IBM 创建并用于 IBM 大型机。

如果问题不清楚,请随时问我...:->

4

2 回答 2

3

JTextComponent有一个方法

public int getSelectionStart()

返回选定文本的起始位置。为空文档返回 0,如果没有选择则返回 dot 的值。

public String getSelectedText()

返回此 TextComponent 中包含的选定文本。如果选择为 null 或文档为空,则返回 null。

于 2010-05-28T13:47:44.307 回答
2

这两种方法getSelectionEnd()getSelectionStart()JTextComponent你有帮助。

String firstSelectedChar;
String text = textArea.getText();
int selectionStart = textArea.getSelectionStart();
firstSelectedChar = text.substring(selectionStart, selectionStart + 1);

这可能与您需要的相似。

于 2010-05-28T13:44:12.880 回答