Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

11.23. 例子

11.23.1. Markdown 转 CSV

			
package cn.netkiller.test;

import lombok.SneakyThrows;

import java.util.Arrays;
import java.util.List;

public class Test {

    @SneakyThrows
    public static void main(String[] args) {
        String markdown = """
                # Table
                
                | id | name | start | finish | resource | progress | predecessor | milestone | parent |
                | ------ | ------ | -------- |
                | 1 | 测试麦克风 | 2025-07-01 | 2025-07-02 | 工程师 | 1 | 0 | False | 0 |
                | 2 | 设备送检 | 2025-07-03 | 2025-07-04 | 设计师 | 1 | 1 | False | 0 |
                | 3 | 完成包装 | 2025-07-05 | 2025-07-10 | 设计师 | 1 | 1 | False | 0 |
                | 4 | 竞品评估 | 2025-07-02 | 2025-07-04 | 设计师 | 1 | 0 | True | 0 |
                | 5 | 分析报告 | 2025-07-08 | 2025-07-15 | 设计师 | 1 | 0 | False | 0 |
                | 6 | 集成测试 | 2025-07-01 | 2025-07-06 | 设计师 | 1 | 0 | False | 0 |
                https://www.netkiller.cn/java/
                """;

//        Arrays.stream(markdown.split("\n")).filter(s -> s.contains("| ")).skip(0).map(line -> {
//            return line.replaceAll(" \\| ", ",").replaceFirst("\\| ", "").replaceFirst(" \\|", "");
//        }).forEach(v -> {
//            System.out.println(v);
//        });

        List<String> lines = Arrays.stream(markdown.split("\n")).filter(s -> s.contains("| ")).skip(0).map(line -> {
            return line.replaceAll(" \\| ", ",").replaceFirst("\\| ", "").replaceFirst(" \\|", "");
        }).filter(s -> !s.contains("-,-")).toList();

        String csv = String.join("\n", lines);
        System.out.println(csv);
    }

}