簡體   English   中英

如何獲取當前打開的編輯器中特定字符串的位置?

[英]how to get the position of a particular string in the editor that is currently opened?

我正在做一個使用eclipse插件創建IDE的項目。

我有一個包含文本框的視圖,當我在其中輸入一些文本並按添加按鈕時,該文本應替換編輯器中的特定字符串。 我可以找到當前的編輯器,但是我不知道如何找到要替換的字符串的位置。

有人可以幫我嗎?

而不是自己做,使用String.replaceFirst()String.replaceAll()進行替換難道不是很容易嗎?

您需要做的就是從目標編輯器中“獲取”當前文本String ,進行替換,然后將結果String “設置”回目標編輯器。

我對Eclipse不熟悉,但是大多數文本字段可能會實現一個抽象類,例如JTextComponent ,該類具有便捷的getText()setText()

如果您具有對編輯器的引用,並且它是ITextEditor,則可以使用

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

現在您有了內容,並且可以找到此字符串中某些代碼的位置。

如果您有用於替換文字的偏移量和要替換的長度,則可以致電

 doc.replace(offset,length,newText);

如果您在eclipse中使用“編輯器”和“視圖”,請首先閱讀編輯器的概念,以及如何在多個編輯器之間提供和共享數據。

Adreamus

/ edit:盡管我將在此處發布評論,但我無法發表評論:Paul Webster的另一個答案使用了不推薦使用的函數“搜索”。 建議改用FindReplaceDocumentAdapter 方法“ find”返回一個IRegion,其中包含與此適配器連接的文檔中的偏移量和長度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM