我正在使用 apached lucene 3.6 实现拼写检查器想要使用单词的“开始”和“结束”位置将拼写错误的单词的突出显示与 Highlight 类集成。
想知道如何在将文本输入到 jtextarea 时获取文本的开始和结束位置。
我知道将不得不使用键盘和鼠标事件侦听器。
但是如何获得文本字符串中每个单词的“开始”和“结束”位置。
谢谢你。
我正在使用 apached lucene 3.6 实现拼写检查器想要使用单词的“开始”和“结束”位置将拼写错误的单词的突出显示与 Highlight 类集成。
想知道如何在将文本输入到 jtextarea 时获取文本的开始和结束位置。
我知道将不得不使用键盘和鼠标事件侦听器。
但是如何获得文本字符串中每个单词的“开始”和“结束”位置。
谢谢你。
假设“单词”只是定义为由空格分隔的字符组,您可以找到所有空格的索引,如下所示:
int index = 0;
String string = ... // get from text area
while((index = string.indexOf(' ', index)) != -1) {
// save them
}
您可以获取空间索引的结果列表并构建 Word 对象列表,消除零长度的单词(相邻空间索引)等。
您需要调用getText()以将文本区域中的完整文本作为字符串获取。然后你可以从这个字符串中取出单词,检查它们,并在同一步骤中获取单词的索引及其结束索引,它们只是开始索引+字长。
你能不能只得到 jTextArea 并在空格处分割字符串。这将为您提供该区域中所有“单词”的数组。
String text = jTextArea.getText();
String[] words = text.split(' ');
然后要获得单词的索引,您只需将单词的长度 + 1 加起来即可。
int[] startIndices = new int[words.length];
int[] endIndices = new int[words.length];
int currentIndex = 0;
for (int i = 0; i < words.length; i++) {
startIndices[i] = currentIndex;
currentIndex += words[i].length;
endIndices[i] = currentIndex;
currentIndex++;
}