如何在当前打开的编辑器中获取特定字符串的位置?

时间:2012-02-27 06:17:04

标签: java eclipse eclipse-plugin

我正在使用eclipse插件创建一个项目来创建一个IDE。

我有一个由文本框组成的视图,当我在其中输入一些文本并按下添加按钮时,文本应该替换编辑器中的特定字符串。 我能够找到当前的编辑器,但我不知道如何找到要替换的字符串的位置。

有人可以帮我这么做吗?

3 个答案:

答案 0 :(得分:3)

不是自己动手,而是使用String.replaceFirst()String.replaceAll()进行替换会不会更容易?

您需要做的就是从目标编辑器“获取”当前文本String,进行替换,然后将生成的String“设置”回目标编辑器。

我不熟悉Eclipse,但是大多数文本字段可能会实现像JTextComponent这样的抽象类,它有getText()setText()方便的方法。

答案 1 :(得分:2)

如果您有对编辑器的引用,并且它是ITextEditor,您可以使用

 IDocumentProvider provider = editor.getDocumentProvider();
 IDocument doc = provider.getDocument(editor.getEditorInput());
 String content = doc.get();

现在您已拥有内容,并且您可以在此字符串中找到某些代码的位置。

如果您有替换文本的偏移量和要替换的长度,您可以调用

 doc.replace(offset,length,newText);

如果您在eclipse中使用编辑器和视图,请首先阅读编辑器的概念,以及如何在多个编辑器之间提供和共享数据。

Adreamus

/编辑:我无法发表评论,但我会在此发布:保罗韦伯斯特的另一个答案使用了弃用的“搜索”功能。建议改为使用FindReplaceDocumentAdapter。方法'find'返回一个IRegion,wchich包含与此适配器连接的文档中的偏移量和长度。

答案 2 :(得分:1)

How do I use the text document model。这描述了在处理基于Eclipse Text的编辑器时如何实现搜索和替换。