IntelliJ IDEA/Andro Studio Plugin 替换选中字符串

来源:互联网 发布:手机图像对比软件 编辑:程序博客网 时间:2024/06/07 21:33
package test;import com.intellij.openapi.actionSystem.AnAction;import com.intellij.openapi.actionSystem.AnActionEvent;import com.intellij.openapi.actionSystem.CommonDataKeys;import com.intellij.openapi.actionSystem.PlatformDataKeys;import com.intellij.openapi.command.WriteCommandAction;import com.intellij.openapi.editor.*;import com.intellij.openapi.project.Project;import com.intellij.openapi.ui.Messages;import com.intellij.openapi.util.TextRange;import org.apache.http.util.TextUtils;/** * Created by Administrator on 2017/4/27. */public class ReplaceCtrID extends AnAction {    @Override    public void actionPerformed(AnActionEvent event) {        Editor mEditor = event.getData(PlatformDataKeys.EDITOR);        final Project project = event.getRequiredData(CommonDataKeys.PROJECT);        if (null == mEditor) {            return;        }        SelectionModel model = mEditor.getSelectionModel();        String selectedText = model.getSelectedText();        if (TextUtils.isEmpty(selectedText)) {            selectedText = getCurrentWords(mEditor);            if (TextUtils.isEmpty(selectedText)) {                return;            }        }        final Document document = mEditor.getDocument();        String queryText = strip(addBlanks(selectedText));        final int start = model.getSelectionStart();        final int end = model.getSelectionEnd();        Runnable runnable = new Runnable() {            @Override            public void run() {                document.replaceString(start, end, "1111111");            }        };        //Making the replacement        WriteCommandAction.runWriteCommandAction(project, runnable);        model.removeSelection();       /* Runnable r = ()-> EditorModificationUtil.deleteSelectedText(mEditor);        WriteCommandAction.runWriteCommandAction(mEditor.getProject(), r);         r = ()-> EditorModificationUtil.insertStringAtCaret(mEditor,"111111");        WriteCommandAction.runWriteCommandAction(mEditor.getProject(), r);*/        //mEditor.getDocument().deleteString(0,1);    }    public String strip(String str) {        return str.replaceAll("/\\*+", "")                .replaceAll("\\*+/", "")                .replaceAll("\\*", "")                .replaceAll("//+", "")                .replaceAll("\r\n", " ")                .replaceAll("\\s+", " ");    }    public String addBlanks(String str) {        String temp = str.replaceAll("_", " ");        if (temp.equals(temp.toUpperCase())) {            return temp;        }        String result = temp.replaceAll("([A-Z]+)", " $0");        return result;    }    public String getCurrentWords(Editor editor) {        Document document = editor.getDocument();        CaretModel caretModel = editor.getCaretModel();         int caretOffset = caretModel.getOffset();        int lineNum = document.getLineNumber(caretOffset);        int lineStartOffset = document.getLineStartOffset(lineNum);        int lineEndOffset = document.getLineEndOffset(lineNum);        String lineContent = document.getText(new TextRange(lineStartOffset, lineEndOffset));        char[] chars = lineContent.toCharArray();        int start = 0, end = 0, cursor = caretOffset - lineStartOffset;        if (!Character.isLetter(chars[cursor])) {            return null;        }        for (int ptr = cursor; ptr >= 0; ptr--) {            if (!Character.isLetter(chars[ptr])) {                start = ptr + 1;                break;            }        }        int lastLetter = 0;        for (int ptr = cursor; ptr < lineEndOffset - lineStartOffset; ptr++) {            lastLetter = ptr;            if (!Character.isLetter(chars[ptr])) {                end = ptr;                break;            }        }        if (end == 0) {            end = lastLetter + 1;        }        String ret = new String(chars, start, end-start);        return ret;    }}
0 0
原创粉丝点击