赞
踩
这是一个与行无关的概念,假设当前文件如下,并且本文所有示例代码均基于这个文件
I
like
TYC
对面上面的文件,如果我想在like后面增加 wh两个字母,它应该变成下面这样子
I
like wh
TYC
我们的Action应该如下写,注意方法insertString
的第1个参数,此处为关键
import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.editor.*; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; public class MyAction extends AnAction { @Override public void actionPerformed(@NotNull AnActionEvent e) { Editor editor = e.getData(PlatformDataKeys.EDITOR); Document document = editor.getDocument(); Project project = editor.getProject(); // 6表示like中e后面的位置,0表示该文件第1个位置,整个文件内容是一个字符序列 Runnable runnable = () ->document.insertString(6, " wh"); WriteCommandAction.runWriteCommandAction(project, runnable); } }
往指定位置插入字符串插入字符串
上述示例已给出,注意需要new Runnable
获取行号
// 位置6在文件第2行,所以lineNumber=1(0算第1行)
int lineNumber = document.getLineNumber(6);
获取指定行的起始偏移量
document.getLineStartOffset(行号);//通常配合上述getLineNumber一起用
获取指定行的结束偏移量
document.getLineEndOffset(行号);//通常配合上述getLineNumber一起用
获取指定行的内容
// 下面的代码是获取第2行(注意行索引从0开始)的内容
int lineStartOffset = document.getLineStartOffset(2);
int lineEndOffset = document.getLineEndOffset(2);
TextRange tr = new TextRange(lineStartOffset, lineEndOffset);
String text = document.getText(tr);
System.out.print(text);// 此处打印TYC
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。