可讀的文本,我已經知道如何從Java中的剪貼板獲得純文本,但有時文本編碼在一些奇怪的DataFlavor
,從Microsoft Word或從Eclipse的網站或者甚至是源代碼進行復印時,像。僅獲得從剪貼板
如何從這些DataFlavor
s中提取純淨的純文本?
可讀的文本,我已經知道如何從Java中的剪貼板獲得純文本,但有時文本編碼在一些奇怪的DataFlavor
,從Microsoft Word或從Eclipse的網站或者甚至是源代碼進行復印時,像。僅獲得從剪貼板
如何從這些DataFlavor
s中提取純淨的純文本?
import java.awt.HeadlessException;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
String data = (String) Toolkit.getDefaultToolkit()
.getSystemClipboard().getData(DataFlavor.stringFlavor);
使用getData()方法和stringFlavor,您應該從剪貼板中獲取純文本。
如果剪貼板中有奇怪的文本,我認爲這應該是一個將數據放入剪貼板的程序的問題。
我們該怎麼做,如果我們想要得到的文本style..eg ,粗體,斜體... –
警告:使用上面的代碼,你可以打這個已知的Java Bug http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6606476(就像我做的那樣),並且沒有任何工作周圍。幸運的是,我安裝了Perl,因此我可以調用Perl腳本將剪貼板內容設置爲純文本。 :( –
@SteveWaring感謝對奇抓不到錯誤的擡頭。沒有測試,但我會建議設置System.err的流爲null,抓空指針試圖Dragon8的解決方案時。(當然不要」 t完成時忘記將其設置回正常^ _ ^) – ThatOneGuy
首先我還沒有與剪貼板工作,但,這似乎intresting
從http://docstore.mik.ua/orelly/java/awt/ch16_01.htm
「從剪貼板中讀取數據,程序調用Transferable.getTransferData()方法。如果數據表示通過與Java類不相對應的DataFlavor(例如,plainTextFlavor),getTransferData()將返回一個InputStream以供您從中讀取數據。「
所以,如果你給它一個不對應的類,你就得到了InputStream,然後你就可以自己從InputStream中讀取「純」文本。
[DataFlavor.plainTextFlavor](http://docs.oracle.com/javase/7/docs/api/java/awt/datatransfer/DataFlavor.html#plainTextFlavor )自Java 1.3以來已被棄用。 – Huxi
你可以用下面的方法得到剪貼板中的文本在Java中:
public String getClipBoard(){
try {
return (String)Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor);
} catch (HeadlessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedFlavorException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
謝謝,但我要尋找一個Java解決方案,而不是JavaScript的 – clamp