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

网站开发工程师的职位酒仙网的网站推广方式

网站开发工程师的职位,酒仙网的网站推广方式,厦门设计师网站,qq网页版打开网页Java提取markdown中的表格 说明 这篇博文是一个舍近求远的操作,如果只需要要对markdown中的表格数据进行提取,完全可以通过正在表达式或者字符串切分来完成。但是鉴于学习的目的,这次采用了commonmark包中的工具来完成。具体实现过程如下 实…

Java提取markdown中的表格

说明

这篇博文是一个舍近求远的操作,如果只需要要对markdown中的表格数据进行提取,完全可以通过正在表达式或者字符串切分来完成。但是鉴于学习的目的,这次采用了commonmark包中的工具来完成。具体实现过程如下

实现步骤

引入pom依赖

		<dependency><groupId>org.commonmark</groupId><artifactId>commonmark</artifactId><version>0.21.0</version></dependency><dependency><groupId>org.commonmark</groupId><artifactId>commonmark-ext-gfm-tables</artifactId><version>0.21.0</version></dependency>

自定义vistor

import org.commonmark.ext.gfm.tables.*;
import org.commonmark.node.*;import java.util.ArrayList;
import java.util.List;public class TableVisitor extends AbstractVisitor {private boolean inHeader = false;private boolean inBody = false;private List<String> currentRow = null;private List<String> headers = new ArrayList<>();private final List<List<String>> rows = new ArrayList<>();@Overridepublic void visit(CustomBlock customBlock) {if (customBlock instanceof TableBlock) {handleTableBlock((TableBlock) customBlock);} else {super.visit(customBlock);}}@Overridepublic void visit(CustomNode customNode) {if (customNode instanceof TableHead) {handleTableHead((TableHead) customNode);} else if (customNode instanceof TableBody) {handleTableBody((TableBody) customNode);} else if (customNode instanceof TableRow) {handleTableRow((TableRow) customNode);} else if (customNode instanceof TableCell) {handleTableCell((TableCell) customNode);} else {super.visit(customNode);}}private void handleTableBlock(TableBlock tableBlock) {// 重置状态inHeader = false;inBody = false;visitChildren(tableBlock);}private void handleTableHead(TableHead tableHead) {inHeader = true;visitChildren(tableHead);inHeader = false;}private void handleTableBody(TableBody tableBody) {inBody = true;visitChildren(tableBody);inBody = false;}private void handleTableRow(TableRow tableRow) {currentRow = new ArrayList<>();visitChildren(tableRow);if (inHeader) {this.headers = currentRow;} else if (inBody) {this.rows.add(currentRow);}}private void handleTableCell(TableCell tableCell) {if (currentRow != null) {currentRow.add(getTextContent(tableCell));}visitChildren(tableCell);}private String getTextContent(Node node) {StringBuilder sb = new StringBuilder();Node child = node.getFirstChild();while (child != null) {if (child instanceof Text) {sb.append(((Text) child).getLiteral());}child = child.getNext();}return sb.toString().trim();}public List<String> getTableHeaders() {return headers;}public List<List<String>> getTableRows() {return rows;}
}

测试用例

public static void main(String[] args) {String content = """| 姓名       | 性别   | 班级        | 年龄          ||--------------|------|--------------------|--------------------|| 张三       |  男    |   兴趣一班                 |             17       || 李四         | 男 | 兴趣一班  | 16  |""";List<Extension> extensions = Arrays.asList(TablesExtension.create());Parser parser = Parser.builder().extensions(extensions).build();Node document = parser.parse(content);TableVisitor visitor = new TableVisitor();document.accept(visitor);List<String> tableHeaders = visitor.getTableHeaders();List<List<String>> tableRows = visitor.getTableRows();System.out.println("表头: " + tableHeaders);System.out.println("表格行数据: "+ tableRows);}

总结

由于没有在commonmark中找到我们需要的vistor,所以自定义了vistor。希望可以对其他同学有所帮助吧。

http://www.dtcms.com/wzjs/799629.html

相关文章:

  • 中国循环经济网站开发与设计网站设计服务要不要交文化事业建设费
  • 专业的昆明网站建设企业建设网站需要注意什么
  • wordpress网站模板下载失败seo推广软件费用
  • 网站文章页做百度小程序昆山的网站建设
  • 盗用网站模板wordpress新手建站
  • 商家入驻型网站建设互联网做什么行业前景好
  • 网站建设企业网站制作平台wordpress暗箱
  • 最新网站制作开发网站申请
  • 湛江网站建设方案书网站手机微信三合一怎么做
  • 企业网站推广可以选择哪些方法?网站建设技术文案
  • 网站建设网络公关宁波seo公司排名
  • 网站建设功能是什么意思网站域名space
  • 网站开发后端有哪些河北廊坊最新消息今天
  • 泰州学习网站建设浙江做网站的公司
  • 营口市网站建设上海优化价格
  • 网站举报平台12315各大搜索引擎提交入口
  • 访问网站 流程图怎样将网站建设后台装到云上
  • 网站建设开发协议书免费网络项目资源网
  • 兰州微信小程序开发公司驻马店seo
  • 衡水网站建设集团网站源码 源码论坛 源码之家 免费源码 商业源码 源码下载
  • 阿里巴巴做网站难吗百度录入网站
  • 网站建设行业数据建设工程培训
  • 网站域名备案资料wordpress 地址转换
  • 国内酒店网站建设做网站虚拟主机哪家好
  • asp网站实现php栏目南京设计网站的公司
  • 常州模板网站建设咨询wordpress修改标签
  • 网站开发排期表wordpress免费插件下载地址
  • 手机网站建设哪里好珠海市城乡规划建设局网站
  • 做网站多钱一年视频网站做电商
  • 网站虚拟主机行吗2015做导航网站有哪些