当前位置: 首页 > wzjs >正文

避免网站 40418种禁用软件黄app入口

避免网站 404,18种禁用软件黄app入口,东莞住建局电话是多少,深圳办公室装修效果图文章目录 工具功能亮点1.核心实现解析1. 剪贴板交互2. HTML检测与提取3. 转换规则设计 2. 完整代码 在日常工作中,我们经常遇到需要将网页表格快速转换为Markdown格式的场景。无论是文档编写、知识整理还是数据迁移,手动转换既耗时又容易出错。本文将介绍…

文章目录

        • 工具功能亮点
        • 1.核心实现解析
          • 1. 剪贴板交互
          • 2. HTML检测与提取
          • 3. 转换规则设计
        • 2. 完整代码

在日常工作中,我们经常遇到需要将网页表格快速转换为Markdown格式的场景。无论是文档编写、知识整理还是数据迁移,手动转换既耗时又容易出错。本文将介绍一个基于Go语言开发的轻量级工具,它能自动从剪贴板提取HTML表格并转换为Markdown格式。


工具功能亮点
  1. 一键转换:直接读取剪贴板中的HTML内容
  2. 智能识别:自动检测并提取首个HTML表格
  3. 格式优化:保留表格结构并添加Markdown语法
  4. 无缝衔接:结果自动写回剪贴板

1.核心实现解析
1. 剪贴板交互
// 读取剪贴板内容
content, err := clipboard.ReadAll()// 将结果写回剪贴板
err = clipboard.WriteAll(markdown)

使用atotto/clipboard库实现跨平台剪贴板操作,无需文件中间步骤。

2. HTML检测与提取
func isHTML(s string) bool {return strings.Contains(s, "<table") || strings.Contains(s, "<tr")
}func extractFirstTable(html string) string {start := strings.Index(html, "<table")end := strings.Index(html[start:], "</table>")return html[start:start+end+8] // 截取完整table标签
}

通过简单高效的字符串扫描定位表格位置,避免复杂解析。

3. 转换规则设计
converter.AddRules(md.Rule{Filter: []string{"table", "tr", "td", "th"},Replacement: func(content string, selec *goquery.Selection) *string {if selec.Is("tr") {return md.String("|" + content + "|\n")}if selec.Is("td") {return md.String(strings.TrimSpace(content) + "|")}// 其他元素处理...}
})

关键转换逻辑:

  • tr 转换为行:|内容|
  • td/th 转换为单元格:内容|
  • 自动添加表头分隔线:|---|---|

2. 完整代码
package mainimport ("fmt""log""os""strings"md "github.com/JohannesKaufmann/html-to-markdown""github.com/PuerkitoBio/goquery""github.com/atotto/clipboard"
)func main() {// 读取剪贴板内容content, err := clipboard.ReadAll()if err != nil {log.Fatal("读取剪贴板失败:", err)}// 检查是否为HTML内容if !isHTML(content) {fmt.Println("剪贴板内容不是HTML格式")os.Exit(0)}// 提取第一个表格tableHTML, err := extractFirstTable(content)if err != nil {log.Fatal("提取表格失败:", err)}if tableHTML == "" {fmt.Println("未找到HTML表格")os.Exit(0)}// 转换为Markdownconverter := md.NewConverter("", true, nil)// 添加表格转换规则converter.AddRules(md.Rule{Filter: []string{"table", "tr", "td", "th"},Replacement: func(content string, selec *goquery.Selection, opt *md.Options) *string {if selec.Is("table") {// 添加表头分隔线rows := strings.Split(strings.TrimSpace(content), "\n")if len(rows) > 1 {header := rows[0]cols := strings.Count(header, "|") - 1separator := "|" + strings.Repeat("---|", cols)// 合并所有行,确保每行数据单独显示content = strings.Join(append([]string{header, separator}, rows[1:]...), "\n") + "\n"}return &content}if selec.Is("tr") {content = "|" + strings.TrimRight(content, "|") + "|\n"return &content}if selec.Is("th") || selec.Is("td") {content = strings.ReplaceAll(content, "\n", "<br>")content = strings.TrimSpace(content) + "|"return &content}return nil},},)markdown, err := converter.ConvertString(tableHTML)if err != nil {log.Fatal("转换Markdown失败:", err)}// 输出结果到控制台fmt.Println("转换后的Markdown表格:")fmt.Println(markdown)// 将结果写入剪贴板err = clipboard.WriteAll(markdown)if err != nil {log.Fatal("写入剪贴板失败:", err)}fmt.Println("已成功将Markdown表格写入剪贴板")
}// isHTML 检查字符串是否是HTML格式
func isHTML(s string) bool {return strings.Contains(strings.ToLower(s), "<html") ||strings.Contains(strings.ToLower(s), "<table") ||strings.Contains(strings.ToLower(s), "<tr") ||strings.Contains(strings.ToLower(s), "<td")
}// extractFirstTable 从HTML中提取第一个表格
func extractFirstTable(html string) (string, error) {// 简单的提取逻辑,实际应用中可能需要更复杂的HTML解析start := strings.Index(strings.ToLower(html), "<table")if start == -1 {return "", nil}end := strings.Index(strings.ToLower(html[start:]), "</table>")if end == -1 {return "", nil}return html[start : start+end+8], nil // +8 是 </table> 的长度
}

文章转载自:

http://YPYPeYXq.rqLbp.cn
http://VZpzQGhq.rqLbp.cn
http://JGUBHFT6.rqLbp.cn
http://vLaoDrUX.rqLbp.cn
http://PSTb9WBc.rqLbp.cn
http://FsB26r1E.rqLbp.cn
http://6SPmvski.rqLbp.cn
http://ceXdtasZ.rqLbp.cn
http://9WTp5ID8.rqLbp.cn
http://HJQKWcgU.rqLbp.cn
http://Zi83DzZn.rqLbp.cn
http://8Mw4odAm.rqLbp.cn
http://zNozceRe.rqLbp.cn
http://DbqHuhae.rqLbp.cn
http://lQgfNKoH.rqLbp.cn
http://Sh7Q4JGf.rqLbp.cn
http://tMfptKun.rqLbp.cn
http://tpM0B0gD.rqLbp.cn
http://tZsmJ3hk.rqLbp.cn
http://SpL38YDL.rqLbp.cn
http://jmRUoqlc.rqLbp.cn
http://UeJD1uiz.rqLbp.cn
http://E293mkUp.rqLbp.cn
http://s8pzzQ4x.rqLbp.cn
http://c4CF9cwm.rqLbp.cn
http://6c2UDdjx.rqLbp.cn
http://f0tMnkbP.rqLbp.cn
http://7FRXFMv8.rqLbp.cn
http://MfpBO0eV.rqLbp.cn
http://PJoRybGS.rqLbp.cn
http://www.dtcms.com/wzjs/710032.html

相关文章:

  • 北京网站seo收费标准wordpress 判断页面id
  • 购物网站分为几个模块网站推广关键词
  • 谈谈对电子商务网站建设与管理国内网站建设
  • 塑胶制品 东莞网站建设三门峡做网站的公司
  • 苏州市建设交通高等学校网站高端网站建站公司
  • wordpress站内跳转做民宿要给网站多少钱
  • 内网网站建设主流语言青岛电商网站制作
  • 做网站后期费用深圳 网站托管
  • 如何看网站是否有做网站地图建设银行信用卡网站是哪个
  • 重庆南岸网站建设免费推广软件排行榜
  • 公司网站开发人员的的工资多少钱彩票网站开发制作模版
  • 内丘附近网站建设价格wordpress文章统计
  • 厦门网站建设多少钱连云区住房和城乡建设局网站
  • 名片在哪个网站做施工企业损益类科目
  • 赤水市建设局官方网站中国城市建设网站
  • 漳州网站开发wordpress 广告公司主题
  • 做推广便宜的网站dw用层还是表格做网站快
  • 免费域名注册服务网站网站建设资格预审公告
  • 网站如何做h5动态页面设计个人网站备案查询
  • 百度公司做网站服务青岛建设公司网站
  • 绿色简单网站合肥网站设计建设公司
  • wordpress建站邮件在线网页游戏免费玩
  • 网站怎么进入电脑更新wordpress
  • 佛山网站建设seo优化WordPress如何设置邮箱验证
  • 济南网站建设方案详细单位微信公众号怎么创建
  • 做销售网站的公司哪家最好wordpress百度小程序
  • 高职示范校建设专题网站qq网页版在线登录官网
  • 山西省住房和城乡建设厅门户网官方网站擦边球做网站挣钱
  • 做微信的网站叫什么米notepad管理wordpress
  • 给网站做接口怎么免费下wordpress