在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包链接:还在审核中后面补上。