1. 程式人生 > >CSDN-markdown黑色背景程式碼生成

CSDN-markdown黑色背景程式碼生成

不用程式碼解決生活中問題的程式設計師,不是一個好程式設計師 —— gdx(高大俠)

從我寫部落格之初,一直都想在部落格裡貼看起來高大上的 黑色背景五彩繽紛的程式碼,但苦苦搜尋之後仍受限於部落格自帶的編輯器。終於,功夫不負有心人,在知道CSDN部落格的markdown編輯器用的是html4語法之後,我找到了一個方法。

1. 獲得程式碼的html5格式

這裡寫圖片描述

這是IDE中程式碼風格,複製貼上到word中:

這裡寫圖片描述

可以看到是儲存了程式碼顏色的。然後檔案->另存為,選擇html格式。用記事本開啟,我們可以看到其中有這樣一段程式碼:

<p class=MsoNormal align=left style='text-align:left;text-autospace:none'>
<b><span lang=EN-US style='font-size:10.0pt;font-family:Consolas;color:#CC7832'>package</span></b>
<span lang=EN-US style='font-size:10.0pt;font-family:Consolas;color:#D9E8F7'> Test</span>
<span lang=EN-US style='font-size:10.0pt;font-family:Consolas;color:lavender'>;</span></p>

這段程式碼描述了package Test;這一行的字號字型和顏色。我們可以發現每個<p>...</p>儲存了程式碼中一行的資訊,每個<span>...</span>中有一個單詞或標點,我們需要提取它的字型和顏色(字號自己設定),然後轉變成html4語法格式。

2. 轉化為html4格式

這裡寫圖片描述

如圖是html4格式,其中<table><tr><td bgcolor=#00000>...</td></tr></table>把背景設為黑色,<ol>...<ol>是有序列表,裡面每個<li align='left'>...</li>

都代表一行,每個<font>...</font>中有一個單詞或標點,包含了這個單詞的字號字型顏色資訊。
那麼重點來了,我們要把htm5格式的程式碼轉化為html4格式。以下是我的程式碼:

3. 程式碼

好東西拿出來大家一起分享(ノ ̄▽ ̄)

  1. package test;
  2. import java.io.BufferedReader;
  3. import java.io.File;
  4. import java.io.FileReader;
  5. import java.io.IOException;
  6. publicclassHtmlConversion{
  7. // <span>標籤中提取字型或顏色
  8. publicstaticStringextract(Stringstr,StringmarkName,StringendTag){
  9. Stringres="";
  10. intstart=str.indexOf(markName);
  11. if(start!=-1){
  12. str=str.substring(start+markName.length()+1);
  13. intend=str.indexOf(endTag);
  14. res=str.substring(0,end);
  15. //System.out.println(res);
  16. }
  17. returnres;
  18. }
  19. //<span>轉化為<font>標籤
  20. publicstaticStringspanConversion(Stringstr){
  21. intsize=2;// 設定字號
  22. Stringresult="";
  23. Stringcolor=extract(str,"color","'");
  24. //System.out.println(color);
  25. Stringface=extract(str,"font-family",";");
  26. //System.out.println(face);
  27. Stringtext="";
  28. intstart=str.indexOf("color");
  29. if(start!=-1){
  30. str=str.substring(start+6);
  31. start=str.indexOf("'>");
  32. str=str.substring(start+2);
  33. intend=str.indexOf("</span>");
  34. if(end!=-1){
  35. text=str.substring(0,end);
  36. text=text.replace("<u>","");
  37. text=text.replace("</u>","");
  38. text=text.replace("\r\n","");
  39. //System.out.println(text);
  40. }
  41. }
  42. if(color!=""&&text!=""){
  43. result="<font size=\""+size+"\" color=\""+color+"\" face='" + face + "'>"+text+"</font>";
  44. }
  45. returnresult;
  46. }
  47. //<p>標籤轉化為<li>標籤
  48. publicstaticStringpConversion(Stringstr){
  49. Stringres="";
  50. String[]list=str.split("<span");
  51. for(inti=1;i<list.length;i++){
  52. res+=spanConversion(list[i]);
  53. }
  54. return"<li>"+res+"</li>";
  55. }
  56. //html5語法轉化為html4語法
  57. publicstaticvoidconverse(StringfileName){
  58. //設定背景為黑色,<ol>為有序列表
  59. Stringcontent="<table><tr><td bgcolor=#00000>\n<ol>";
  60. System.out.println(content);
  61. Filefile=newFile(fileName);
  62. BufferedReaderreader=null;
  63. StringpMark="";//<p>標籤
  64. try{
  65. reader=newBufferedReader(newFileReader(file));
  66. Stringtemp=null;
  67. while((temp=reader.readLine())!=null){
  68. pMark+=temp;
  69. if(pMark.contains("<p class")&&pMark.contains("</p>")){
  70. content=HtmlConversion.pConversion(pMark);
  71. System.out.println(content);
  72. pMark="";
  73. }
  74. }
  75. content="<ol>\n</td></tr></table>";
  76. System.out.println(content);
  77. reader.close();
  78. }catch(Exceptione){
  79. e.printStackTrace();
  80. }finally{
  81. if(reader!=null){
  82. try{
  83. reader.close();
  84. }catch(IOExceptione1){
  85. }
  86. }
  87. }
  88. }
  89. publicstaticvoidmain(String[]args){
  90. Stringfile="C:/Users/username/Desktop/test.html";
  91. converse(file);
  92. }
  93. }

4. 複製到markdown

執行之後,把控制檯輸出的程式碼複製貼上到markdown編輯器中,得到如下結果:

這裡寫圖片描述

大功告成ヾ(゚∀゚ゞ)