微信读书笔记支持复制到粘贴板。解析内容转成JSON。
微信读书笔记复制操作如下图所示。

package com.mindskip.xzs;
import com.alibaba.fastjson2.JSON;
import org.apache.commons.lang3.StringUtils;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
/**
* @author tianya
* @date 2023/02/05
**/
public class Test {
public static void main(String[] args) {
String content = "《长期投资》\n" +
"弗朗西斯科·加西亚·帕拉梅斯\n" +
"12个笔记\n" +
"\n" +
"\n" +
"◆ 推荐序二 西班牙版彼得·林奇的自学成才之路\n" +
"\n" +
">> 所有投资高手的时间精力都投向了这三大块:行动、思考、读书。\n" +
"\n" +
"\n" +
"◆ 第二部分 理论:投资的基础\n" +
"\n" +
">> 我们无法利用统计工具分析人的行为。\n" +
"\n" +
">> 收益的喜乐比亏损的痛苦和不适更短暂\n" +
"\n" +
">> 损失给我们带来的痛苦比我们从同样数量的收益中获得的快乐还要多。\n" +
"\n" +
">> 消化均值回归这个概念是需要努力的,直到今天,它仍然是一个难题。\n" +
"\n" +
">> 第一个问题是,我们倾向于根据过去,尤其是最近来推断未来。我们很难相信事情会改变。这就是所谓的“代表性”问题\n" +
"\n" +
">> 第二个问题是难以违背我们周围的主流观点:从众心理。\n" +
"\n" +
">> 这三个特征——推断、从众心理和参考点——阻碍了我们遵循过经验证的投资策略或在股价较低时买入股票。\n" +
"\n" +
">> 减轻损失的方法相对简单:我们需要做出决定,就好像我们没有持有任何股票一样,就好像这是我们第一次对某只特定股票做出决定一样,即忘记我们目前的头寸。如果我从现在开始分析,那么我会买这只股票吗?解决方案很简单,困难在于要减少我们的损失以及所有相应的影响。\n" +
"\n" +
">> 当面对信息超载时,无数情况下的事实证明:信息越少,决策越好\n" +
"\n" +
"\n" +
"◆ 附录\n" +
"\n" +
">> 没有人需要投资任何东西。通常人们最好是什么都不做。\n" +
"\n" +
">> 享受这个过程。旅途的过程比到达终点更有趣。";
try {
readLine(content);
} catch (IOException e) {
e.printStackTrace();
}
}
private static void readLine(String content) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(content.getBytes(Charset.forName("utf8"))), Charset.forName("utf8")));
String line;
int i = 0;
String from = "";
String author = "";
List<Excerpt> excerptList = new ArrayList<>();
while ((line = br.readLine()) != null) {
if (StringUtils.isNotBlank(line.trim())) {
if (i == 0) {
from = line.replace("《", "").replace("》", "");
} else if (i == 1) {
author = line;
} else if (line.startsWith(">>")) {
Excerpt excerpt = new Excerpt();
excerpt.content = line.replace(">> ", "");
excerpt.author = author;
excerpt.from = from;
excerptList.add(excerpt);
}
}
i++;
}
System.out.println(JSON.toJSON(excerptList));
}
public static class Excerpt {
public String content;
public String author;
public String from;
}
}