我试图删除JTextArea中的所有偶数行,但是我无法让它工作。 我的JTextArea被称为"输入"并且我使用for循环遍历这些行,然后删除所有偶数行。 我的循环:
for (int i=0; i<lineMax; i++) {
if (lineNum % 2 == 0) {
end = input.getLineEndOffset(0);
input.replaceRange("", 0, end);
}
lineNum++;
}
如果我把&#34;这是一个测试&#34;进入我的JTextArea,新行上的每个单词输出将是&#34;测试&#34; (每个单词都在新行上)。
答案 0 :(得分:3)
end = input.getLineEndOffset(0);
input.replaceRange("", 0, end);
这将始终获得第一行的偏移量,因此您将始终将文本从偏移0移除到第一行的末尾。
算法将比尝试在文本区域中向前循环时更复杂,因为每次删除一行时,以下行的偏移都会发生变化,相对行数会发生变化,因此您不知道哪一行是奇数/甚至更多。
更简单的方法是从文本区域的最后一行开始。这样,删除文本时前一行的相对行号不会改变。
您可以使用JTextArea
的以下方法来帮助理解逻辑:
getLineCount()
- 从这里开始并倒数到第零行getLineEndOffset()
和getLineStartOffset()
- 当您找到偶数行时,您会获得两个偏移并删除文本。