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. 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编辑器中,得到如下结果:

    这里写图片描述

    大功告成ヾ(゚∀゚ゞ)

    • 12
      点赞
    • 23
      收藏
      觉得还不错? 一键收藏
    • 3
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论 3
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值