在API中的我们很容易看到继承关系表示图:
但是复制出来后的内容却不是这样,复制出来的文本上面的“L”变成了“继承者”:
java.lang.Object 继承者 java.io.Reader 继承者 java.io.BufferedReader
这里写一个方法来把上面的继承者替换成"L---->":
代码最后生成的效果:
java.lang.Object L---> java.io.Reader L---> java.io.BufferedReader
下面是这个文本替换的代码:
import java.util.Scanner; import clipboard.util.SysClipboardUtil; public class GetExtendsStr { public static void main(String[] args) { //从剪贴板获取文字 String text=SysClipboardUtil.getSysClipboardText(); System.out.println(text); Scanner scanner=new Scanner(text); String line; StringBuilder buf=new StringBuilder(); int i=0; System.out.println("------------------"); while(scanner.hasNext()) { line=scanner.nextLine(); line=line.trim();//删除前后空白符 if(line.contains("继承者")) { line=addTab(i++)+line.replace("继承者", "L--->"); } buf.append(line+"\n"); } System.out.println(buf.toString()); SysClipboardUtil.setSysClipboardText(buf.toString()); } public static String addTab(int num) { String tab=" "; StringBuilder replaceBuf=new StringBuilder(); for(int i=0;i<num;i++) { replaceBuf.append(tab); } return replaceBuf.toString(); } }
这里打包成可执行jar来使用:
这个代码用到了一个从剪贴板中复制文本的工具类:clipboard.util.SysClipboardUtil
这个工具类的代码:具体出处我忘了在哪里了,抱歉。
package clipboard.util; import java.awt.Image; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.image.BufferedImage; import java.io.IOException; public class SysClipboardUtil { /** * 从剪贴板中获取文本字符串。 * @return 剪贴板中的文本。 */ public static String getSysClipboardText() { String ret = ""; Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard(); // 获取剪切板中的内容 Transferable clipTf = sysClip.getContents(null); if (clipTf != null) { // 检查内容是否是文本类型 if (clipTf.isDataFlavorSupported(DataFlavor.stringFlavor)) { try { ret = (String) clipTf .getTransferData(DataFlavor.stringFlavor); } catch (Exception e) { e.printStackTrace(); } } } return ret; } /** * 把字符串写到系统剪贴板。 * @param writeMe 要写入剪贴板的文本 */ public static void setSysClipboardText(String writeMe) { Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard(); Transferable tText = new StringSelection(writeMe); clip.setContents(tText, null); } /** * 从系统剪贴板获取图片。 * @return 系统剪贴板里面的图片。 */ public static BufferedImage getImageFromClipboard() { try { Clipboard sysc = Toolkit.getDefaultToolkit().getSystemClipboard(); Transferable cc = sysc.getContents(null); if (cc == null) return null; else if (cc.isDataFlavorSupported(DataFlavor.imageFlavor)) return (BufferedImage) cc .getTransferData(DataFlavor.imageFlavor); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 把图片复制到剪贴板中。 * @param image 要复制到剪贴板的图片。 */ public static void setClipboardImage(final Image image) { Transferable trans = new Transferable() { public DataFlavor[] getTransferDataFlavors() { return new DataFlavor[] {DataFlavor.imageFlavor}; } public boolean isDataFlavorSupported(DataFlavor flavor) { return DataFlavor.imageFlavor.equals(flavor); } public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (isDataFlavorSupported(flavor)) return image; throw new UnsupportedFlavorException(flavor); } }; Toolkit.getDefaultToolkit().getSystemClipboard().setContents(trans, null); } }
我把这个工具类导出成jar包了,这里给出工具类的jar包链接:还在审核中后面补上。