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>...</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. public class HtmlConversion {
  7.     // <span>標籤中提取字體或顏色
  8.     public static String extract(String str, String markName, String endTag) {
  9.         String res = "";
  10.         int start = str.indexOf(markName);
  11.         if (start != -1) {
  12.             str = str.substring(start + markName.length() + 1);
  13.             int end = str.indexOf(endTag);
  14.             res = str.substring(0, end);
  15.             //System.out.println(res);
  16.         }
  17.         return res;
  18.     }
  19.     //<span>轉化爲<font>標籤
  20.     public static String spanConversion(String str) {
  21.         int size = 2;// 設置字號
  22.         String result = "";
  23.         String color = extract(str, "color", "'");
  24.         //System.out.println(color);
  25.         String face = extract(str, "font-family", ";");
  26.         //System.out.println(face);
  27.         String text = "";
  28.         int start = str.indexOf("color");
  29.         if (start != -1) {
  30.             str = str.substring(start + 6);
  31.             start = str.indexOf("'>");
  32.             str = str.substring(start + 2);
  33.             int end = 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.         return result;
  46.     }
  47.     //<p>標籤轉化爲<li>標籤
  48.     public static String pConversion(String str) {
  49.         String res = "";
  50.         String[] list = str.split("<span");
  51.         for (int i = 1; i < list.length; i++) {
  52.             res += spanConversion(list[i]);
  53.         }
  54.         return "<li>" + res + "</li>";
  55.     }
  56.     //html5語法轉化爲html4語法
  57.     public static void converse(String fileName) {
  58.         //設置背景爲黑色,<ol>爲有序列表
  59.         String content = "<table><tr><td bgcolor=#00000>\n<ol>";
  60.         System.out.println(content);
  61.         File file = new File(fileName);
  62.         BufferedReader reader = null;
  63.         String pMark = "";//<p>標籤
  64.         try {
  65.             reader = new BufferedReader(new FileReader(file));
  66.             String temp = 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 (Exception e) {
  79.             e.printStackTrace();
  80.         } finally {
  81.             if (reader != null) {
  82.                 try {
  83.                     reader.close();
  84.                 } catch (IOException e1) {
  85.                 }
  86.             }
  87.         }
  88.     }
  89.     public static void main(String[] args) {
  90.         String file = "C:/Users/username/Desktop/test.html";
  91.         converse(file);
  92.     }
  93. }

4. 複製到markdown

運行之後,把控制檯輸出的代碼複製粘貼到markdown編輯器中,得到如下結果:

這裏寫圖片描述

大功告成ヾ(゚∀゚ゞ)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章